diff --git a/.gitignore b/.gitignore
index 5409b7278f443413ab7dfec5de0b73a2980855c4..52ca7bd1f29c7c9da49984e56829dfbe46a63636 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
 .env
 keycloak_db/
+themes/*
+!themes/custom-theme-template
diff --git a/docker-compose.yml b/docker-compose.yml
index 89d3ba9b2c1c2b4ff72e49d04b3cb089213c6411..675008aa66d4c6cb09bf6e332dde7dcfbb9b6793 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -13,7 +13,8 @@ services:
             KC_DB_USERNAME: keycloak
             KC_DB_PASSWORD: ${MARIADB_PASS}
             KC_DB_URL_HOST: mariadb
-
+        volumes:
+            - './themes:/opt/keycloak/themes'
         depends_on:
             - mariadb
         restart: ${RESTART}
diff --git a/themes/custom-theme-template/account/index.ftl b/themes/custom-theme-template/account/index.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..8f96af97cf1744a5da3f2d7e2644e1ba8a505733
--- /dev/null
+++ b/themes/custom-theme-template/account/index.ftl
@@ -0,0 +1,14 @@
+<!doctype html>
+<html lang="${locale}">
+    <head>
+        <title>${msg("accountManagementTitle")}</title>
+
+        <meta charset="utf-8">
+        <meta name="robots" content="noindex, nofollow">
+    </head>
+
+    <body>
+        <h1>${msg("accountManagementWelcomeMessage")}</h1>
+        <p>${msg("accountManagementBaseThemeCannotBeUsedDirectly")}</p>
+    </body>
+</html>
diff --git a/themes/custom-theme-template/account/messages/messages_ar.properties b/themes/custom-theme-template/account/messages/messages_ar.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4e5c064cb3285d8390d2fd823bad1f2cf867557b
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_ar.properties
@@ -0,0 +1,405 @@
+doSave=حفظ
+doCancel=إلغاء
+doLogOutAllSessions=تسجيل الخروج لجميع الجلسات
+doRemove=إزالة
+doAdd=إضافة
+doSignOut=تسجيل خروج
+doLogIn=تسجيل دخول
+doLink=ربط
+noAccessMessage=الوصول غير مسموح
+
+personalInfoSidebarTitle=البيانات الشخصية
+accountSecuritySidebarTitle=أمان الحساب
+signingInSidebarTitle=عملية تسجيل الدخول
+deviceActivitySidebarTitle=نشاط الأجهزة
+linkedAccountsSidebarTitle=الحسابات المرتبطة
+
+editAccountHtmlTitle=تعديل الحساب
+personalInfoHtmlTitle=البيانات الشخصية
+federatedIdentitiesHtmlTitle=الهويات المتحدة
+accountLogHtmlTitle=سجل الحساب
+changePasswordHtmlTitle=تغيير كلمة المرور
+deviceActivityHtmlTitle=نشاط الأجهزة
+sessionsHtmlTitle=الجلسات
+accountManagementTitle=إدارة الحساب
+authenticatorTitle=تطبيقات المصادقة
+applicationsHtmlTitle=التطبيقات
+linkedAccountsHtmlTitle=الحسابات المرتبطة
+
+accountManagementWelcomeMessage=أهلاً بك في صفحة إدارة الحساب
+personalInfoIntroMessage=قم بإدارة البيانات الأساسية الخاصة بك
+accountSecurityTitle=أمان الحساب
+accountSecurityIntroMessage=تحكم في كلمة المرور والوصول لحسابك
+applicationsIntroMessage=قم بتتبع وإدارة أذونات التطبيقات للوصول إلى حسابك
+resourceIntroMessage=شارك الموارد مع أعضاء الفريق
+passwordLastUpdateMessage=تم تغيير كلمة المرور الخاصة بك في
+updatePasswordTitle=تغيير كلمة المرور
+updatePasswordMessageTitle=تأكد من اختيار كلمة مرور قوية
+updatePasswordMessage=كلمة المرور القوية تتكون من مزيج من الأرقام والحروف والرموز، بحيث يصعب تخمينها ولا تمثل كلمات حقيقية، وتستخدم لهذا الحساب فقط.
+personalSubTitle=بياناتك الأساسية
+personalSubMessage=قم بإدارة البيانات الأساسية الخاصة بك.
+
+authenticatorCode=رمز لمرة واحدة
+email=البريد الإلكتروني
+firstName=الاسم الأول
+givenName=الاسم الأول
+fullName=الاسم الكامل
+lastName=الاسم الأخير
+familyName=اسم العائلة
+password=كلمة المرور
+currentPassword=كلمة المرور الحالية
+passwordConfirm=تأكيد
+passwordNew=كلمة مرور جديدة
+username=اسم المستخدم
+address=العنوان
+street=الشارع
+locality=المدينة
+region=الولاية أو المنطقة
+postal_code=الرمز البريدي
+country=الدولة
+emailVerified=تم التحقق من البريد الإلكتروني
+website=الموقع الإلكتروني
+phoneNumber=رقم الهاتف
+phoneNumberVerified=تم التحقق من رقم الهاتف
+gender=الجنس
+birthday=تاريخ الميلاد
+zoneinfo=التوقيت
+gssDelegationCredential=تفويض الاعتماد GSS
+
+profileScopeConsentText=ملف تعريفي للمستخدم
+emailScopeConsentText=البريد الإلكتروني
+addressScopeConsentText=العنوان
+phoneScopeConsentText=رقم الهاتف
+offlineAccessScopeConsentText=الوصول دون اتصال
+samlRoleListScopeConsentText=الأدوار الخاصة بي
+rolesScopeConsentText=أدوار المستخدم
+
+role_admin=مسؤول
+role_realm-admin=مسؤول منظومة
+role_create-realm=إنشاء منظومة
+role_view-realm=عرض المنظومة
+role_view-users=عرض المستخدمين
+role_view-applications=عرض التطبيقات
+role_view-groups=عرض المجموعات
+role_view-clients=عرض العملاء
+role_view-events=عرض الأحداث
+role_view-identity-providers=عرض مزودي الحسابات
+role_view-consent=عرض الاتفاقيات
+role_manage-realm=إدارة المنظومة
+role_manage-users=إدارة المستخدمين
+role_manage-applications=إدارة التطبيقات
+role_manage-identity-providers=إدارة مزودي الحسابات
+role_manage-clients=إدارة العملاء
+role_manage-events=إدارة الأحداث
+role_view-profile=عرض الملف الشخصي
+role_manage-account=إدارة الحساب
+role_manage-account-links=إدارة ارتباطات الحساب
+role_manage-consent=إدارة الاتفاقيات
+role_read-token=قراءة الرمز
+role_offline-access=الوصول دون اتصال
+role_uma_authorization=الحصول على أذونات
+client_account=الحساب
+client_account-console=لوحة التحكم بالحساب
+client_security-admin-console=لوحة التحكم بأمان المسؤول
+client_admin-cli=واجهة سطر الأوامر للمسؤول
+client_realm-management=إدارة المنظومة
+client_broker=وسيط
+
+
+requiredFields=الحقول المطلوبة
+allFieldsRequired=جميع الحقول مطلوبة
+
+backToApplication=&raquo; العودة إلى التطبيق
+backTo=العودة إلى {0}
+
+date=التاريخ
+event=الحدث
+ip=عنوان الشبكة
+client=العميل
+clients=العملاء
+details=التفاصيل
+started=ابتدأ في
+lastAccess=آخر وصول
+expires=ينتهي في
+applications=التطبيقات
+
+account=الحساب
+federatedIdentity=الهوية المتحدة
+authenticator=تطبيقات المصادقة
+device-activity=نشاط الأجهزة
+sessions=الجلسات
+log=السجل
+
+application=التطبيق
+availableRoles=الأدوار المتاحة
+grantedPermissions=الأذونات الممنوحة
+grantedPersonalInfo=البيانات الشخصية الممنوحة
+additionalGrants=المنح الإضافية
+action=الإجراء
+inResource=في
+fullAccess=وصول شامل
+offlineToken=رمز دون اتصال
+revoke=إبطال المنحة
+
+configureAuthenticators=تطبيقات المصادقة المهيئة
+mobile=هاتف متنقل
+totpStep1=قم بتثبيت إحدى التطبيقات التالية على هاتفك المتنقل:
+totpStep2=افتح التطبيق ثم امسح رمز الاستجابة السريعة:
+totpStep3=أدخل رمز التحقق ذات الاستخدام الواحد والصادر من التطبيق ثم انقر على زر الحفظ لإتمام الإعداد.
+totpStep3DeviceName=ضع اسمًا للجهاز حتى يسهل عليك إدارة أجهزة المصادقة.
+
+totpManualStep2=افتح التطبيق ثم أدخل المفتاح:
+totpManualStep3=استخدم قيم التكوين التالية إذا سمح التطبيق بتعيينها:
+totpUnableToScan=غير قادر على المسح؟
+totpScanBarcode=مسح رمز الاستجابة السريعة؟
+
+totp.totp=على أساس الوقت
+totp.hotp=على أساس العداد
+
+totpType=النوع
+totpAlgorithm=الخوارزمية
+totpDigits=عدد الخانات
+totpInterval=المدة الزمنية
+totpCounter=العداد
+totpDeviceName=اسم الجهاز
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=هذا الإجراء لا رجعة فيه
+deletingImplies=حذف حسابك يؤدي إلى:
+errasingData=محو جميع البيانات الخاصة بك
+loggingOutImmediately=تسجيل خروجك على الفور
+accountUnusable=أي استخدام لاحق للتطبيق لن يكون ممكنًا مع هذا الحساب
+
+missingUsernameMessage=الرجاء تحديد اسم المستخدم.
+missingFirstNameMessage=الرجاء تحديد الاسم الأول.
+invalidEmailMessage=البريد الإلكتروني غير صالح.
+missingLastNameMessage=الرجاء تحديد الاسم الأخير.
+missingEmailMessage=الرجاء تحديد البريد الإلكتروني.
+missingPasswordMessage=الرجاء تحديد كلمة المرور.
+notMatchPasswordMessage=كلمات المرور غير متطابقة.
+invalidUserMessage=مستخدم غير صالح
+updateReadOnlyAttributesRejectedMessage=تم رفض تحديث البيانات التي هي للقراءة فقط
+
+missingTotpMessage=الرجاء تحديد رمز التحقق.
+missingTotpDeviceNameMessage=الرجاء تحديد اسم الجهاز.
+invalidPasswordExistingMessage=كلمة المرور الحالية غير صالحة.
+invalidPasswordConfirmMessage=تأكيد كلمة المرور غير متطابق.
+invalidTotpMessage=رمز التحقق غير صالح.
+
+usernameExistsMessage=اسم المستخدم مستخدم مسبقًا.
+emailExistsMessage=البريد الإلكتروني مستخدم مسبقًا.
+
+readOnlyUserMessage=لا يمكنك تحديث حسابك لأنه في وضعية القراءة فقط.
+readOnlyUsernameMessage=لا يمكنك تحديث اسم المستخدم لأنه في وضعية القراءة فقط.
+readOnlyPasswordMessage=لا يمكنك تحديث كلمة المرور لأن حسابك في وضعية القراءة فقط.
+
+successTotpMessage=تم تهيئة تطبيق مصادقة.
+successTotpRemovedMessage=تم إزالة تطبيق مصادقة.
+
+successGrantRevokedMessage=تم إبطال الصلاحيات الممنوحة بنجاح.
+
+accountUpdatedMessage=تم تحديث الحساب الخاص بك.
+accountPasswordUpdatedMessage=تم تحديث كلمة المرور الخاصة بك.
+
+missingIdentityProviderMessage=مزود الحسابات غير محدد.
+invalidFederatedIdentityActionMessage=إجراء غير صالح أو مفقود.
+identityProviderNotFoundMessage=لم يتم العثور على مزود الحسابات المحدد.
+federatedIdentityLinkNotActiveMessage=هذه الهوية لم تعد نشطة.
+federatedIdentityRemovingLastProviderMessage=لا يمكنك إزالة آخر هوية متحدة لأنه ليس لديك كلمة مرور.
+identityProviderRedirectErrorMessage=فشل في إعادة التوجيه إلى مزود الحسابات.
+identityProviderRemovedMessage=تمت إزالة مزود الحسابات بنجاح.
+identityProviderAlreadyLinkedMessage=الهوية الموحدة التي أرجعها {0} مرتبطة مسبقًا بمستخدم آخر.
+staleCodeAccountMessage=انتهت صلاحية الصفحة. يرجى المحاولة مرة أخرى.
+consentDenied=تم رفض الاتفاقية.
+access-denied-when-idp-auth=تم رفض الاتفاقية أثناء المصادقة مع {0}
+
+accountDisabledMessage=الحساب معطل، تواصل مع مسؤول النظام.
+
+accountTemporarilyDisabledMessage=الحساب معطل مؤقتًا، تواصل مع مسؤول النظام أو حاول مرة أخرى لاحقًا.
+invalidPasswordMinLengthMessage=كلمة المرور غير صالحة: الحد الأدنى للطول {0}.
+invalidPasswordMaxLengthMessage=كلمة المرور غير صالحة: الحد الأقصى للطول {0}.
+invalidPasswordMinLowerCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف صغيرة على الأقل.
+invalidPasswordMinDigitsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} أرقام على الأقل.
+invalidPasswordMinUpperCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف كبيرة على الأقل.
+invalidPasswordMinSpecialCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} رموز على الأقل.
+invalidPasswordNotUsernameMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لاسم المستخدم.
+invalidPasswordNotEmailMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للبريد الإلكتروني.
+invalidPasswordRegexPatternMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للأنماط المحددة.
+invalidPasswordHistoryMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لأي من كلمات المرور الـ {0} الأخيرة.
+invalidPasswordBlacklistedMessage=كلمة المرور غير صالحة: كلمة المرور في القائمة السوداء.
+invalidPasswordGenericMessage=كلمة المرور غير صالحة: كلمة المرور الجديدة لا تتطابق مع سياسات كلمة المرور.
+
+# Authorization
+myResources=الموارد الخاص بي
+myResourcesSub=الموارد الخاص بي
+doDeny=رفض
+doRevoke=إبطال
+doApprove=موافقة
+doRemoveSharing=إزالة المشاركة
+doRemoveRequest=إزالة الطلب
+peopleAccessResource=الأشخاص الذين يمكنهم الوصول إلى هذا المورد
+resourceManagedPolicies=أذونات تمنح حق الوصول إلى هذا المورد
+resourceNoPermissionsGrantingAccess=لا توجد أذونات تمنح حق الوصول إلى هذا المورد
+anyAction=أي إجراء
+description=الوصف
+name=الاسم
+scopes=المجالات
+resource=المورد
+user=المستخدم
+peopleSharingThisResource=الأشخاص الذين يشاركون هذا المورد
+shareWithOthers=المشاركة مع الآخرين
+needMyApproval=يتطلب موافقتي
+requestsWaitingApproval=طلباتك تنتظر الموافقة
+icon=الأيقونة
+requestor=صاحب الطلب
+owner=المالك
+resourcesSharedWithMe=الموارد التي تم مشاركتها معي
+permissionRequestion=طلب الإذن
+permission=الإذن
+shares=المشاركات
+notBeingShared=لم يتم مشاركة هذا المورد.
+notHaveAnyResource=ليس لديك أي موارد
+noResourcesSharedWithYou=لا توجد موارد تم مشاركتها معك
+havePermissionRequestsWaitingForApproval=لديك {0} طلبات إذن في انتظار الموافقة.
+clickHereForDetails=انقر هنا للتفاصيل.
+resourceIsNotBeingShared=لم يتم مشاركة المورد
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+# Applications
+applicationName=الاسم
+applicationType=نوع التطبيق
+applicationInUse=تطبيق قيد الاستخدام فقط
+clearAllFilter=مسح كل عوامل التصفية
+activeFilters=عوامل التصفية النشطة
+filterByName=التصفية بالاسم...
+allApps=جميع التطبيقات
+internalApps=التطبيقات الداخلية
+thirdpartyApps=تطبيقات طرف ثالث
+appResults=النتائج
+clientNotFoundMessage=العميل غير موجود.
+
+# Linked account
+authorizedProvider=مزود حسابات معتمد
+authorizedProviderMessage=مزودو الحسابات المعتمدون المرتبطون بحسابك
+identityProvider=مزود حسابات
+identityProviderMessage=لربط حسابك بمزودي الحسابات الذين قمت بإعدادهم
+socialLogin=تسجيل دخول منصات التواصل الاجتماعي
+userDefined=معرف من قبل المستخدم
+removeAccess=إزالة صلاحية الوصول
+removeAccessMessage=ستحتاج إلى منح صلاحية الوصول مرة أخرى، إذا كنت تريد استخدام حساب التطبيق هذا.
+
+#Authenticator
+authenticatorStatusMessage=المصادقة الثنائية حاليًا
+authenticatorFinishSetUpTitle=المصادقة الثنائية الخاصة بك
+authenticatorFinishSetUpMessage=في كل مرة تقوم فيها بتسجيل الدخول إلى حسابك، سيطلب منك تقديم رمز مصادقة ثنائي.
+authenticatorSubTitle=إعداد المصادقة الثنائية
+authenticatorSubMessage=لتعزيز أمان حسابك، قم بتمكين طريقة واحدة على الأقل من طرق المصادقة الثنائية المتاحة.
+authenticatorMobileTitle=المصادقة بالهاتف الذكي
+authenticatorMobileMessage=استخدم المصادقة بالهاتف الذكي للحصول على رموز التحقق كمصادقة ثنائية.
+authenticatorMobileFinishSetUpMessage=تم ربط المصادقة بهاتفك.
+authenticatorActionSetup=إعداد
+authenticatorSMSTitle=رمز الرسائل النصية القصيرة
+authenticatorSMSMessage=سيتم إرسال رمز التحقق إلى هاتفك كمصادقة ثنائية.
+authenticatorSMSFinishSetUpMessage=تم إرسال الرسالة النصية إلى
+authenticatorDefaultStatus=افتراضي
+authenticatorChangePhone=تغيير رقم الهاتف الجوال
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=إعداد تطبيق هاتف مصادق
+smscodeIntroMessage=أدخل رقم هاتفك المحمول وسوف يتم إرسال رمز التحقق إلى هاتفك.
+mobileSetupStep1=قم بتثبيت تطبيق مصادقة على هاتفك. التطبيقات المدرجة هنا هي المدعومة.
+mobileSetupStep2=افتح التطبيق وقم بمسح رمز الاستجابة السريعة:
+mobileSetupStep3=أدخل رمز التحقق ذات الاستخدام الواحد والصادر من التطبيق ثم انقر على زر الحفظ لإتمام الإعداد.
+scanBarCode=تريد مسح رمز الاستجابة السريعة؟
+enterBarCode=أدخل رمز التحقق ذات الاستخدام الواحد
+doCopy=نسخ
+doFinish=إنهاء
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=إعداد رمز الرسائل النصية القصيرة
+chooseYourCountry=اختر دولتك
+enterYourPhoneNumber=أدخل رقم الهاتف الجوال
+sendVerficationCode=إرسال رمز تحقق
+enterYourVerficationCode=أدخل رمز التحقق
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=إعداد رموز المصادقة الاحتياطية
+realmName=المنظومة
+doDownload=تنزيل
+doPrint=طباعة
+generateNewBackupCodes=توليد رموز مصادقة احتياطية جديدة
+backtoAuthenticatorPage=العودة إلى صفحة المصادقة
+
+
+#Resources
+resources=الموارد
+sharedwithMe=تم مشاركتها معي
+share=مشاركة
+sharedwith=تم مشاركتها مع
+accessPermissions=أذونات الوصول
+permissionRequests=طلبات الإذن
+approve=موافقة
+approveAll=موافقة على الكل
+people=أشخاص
+perPage=لكل صفحة
+currentPage=الصفحة الحالية
+sharetheResource=مشاركة المورد
+group=مجموعة
+selectPermission=اختر الإذن
+addPeople=أضف أشخاصًا لمشاركة موردك معهم
+addTeam=أضف فريقًا لمشاركة موردك معهم
+myPermissions=الأذونات الخاصة بي
+waitingforApproval=بانتظار الموافقة
+anyPermission=أي إذن
+
+# Openshift messages
+openshift.scope.user_info=معلومات المستخدم
+openshift.scope.user_check-access=معلومات وصول المستخدم
+openshift.scope.user_full=الوصول الكامل
+openshift.scope.list-projects=قائمة المشاريع
+
+error-invalid-value=قيمة غير صالحة.
+error-invalid-blank=يرجى تحديد قيمة.
+error-empty=يرجى تحديد قيمة.
+error-invalid-length=الحقل {0} يجب أن يكون طوله بين {1} و {2}.
+error-invalid-length-too-short=الحقل {0} يجب ألا يقل طوله عن {1}.
+error-invalid-length-too-long=الحقل {0} يجب ألا يزيد طوله عن {2}.
+error-invalid-email=بريد إلكتروني غير صالح.
+error-invalid-number=رقم غير صالح.
+error-number-out-of-range=الحقل {0} يجب أن يكون رقمًا بين {1} و {2}.
+error-number-out-of-range-too-small=الحقل {0} يجب ألا تقل قيمته عن {1}.
+error-number-out-of-range-too-big=الحقل {0} يجب ألا تزيد قيمته عن {2}.
+error-pattern-no-match=قيمة غير صالحة.
+error-invalid-uri=عنوان موقع غير صالح.
+error-invalid-uri-scheme=بادئة عنوان موقع غير صالحة.
+error-invalid-uri-fragment=ملحق عنوان موقع غير صالح.
+error-user-attribute-required=يرجى تحديد الحقل {0}.
+error-invalid-date=تاريخ غير صالح.
+error-user-attribute-read-only=الحقل {0} للقراءة فقط.
+error-username-invalid-character=اسم المستخدم يحتوي على حرف غير صالح.
+error-person-name-invalid-character=الاسم يحتوي على حرف غير صالح.
diff --git a/themes/custom-theme-template/account/messages/messages_ca.properties b/themes/custom-theme-template/account/messages/messages_ca.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7ecc2b2ffba2b7f068e6cbc25e3d0adefa8cba18
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_ca.properties
@@ -0,0 +1,405 @@
+doSave=Desa
+doCancel=Cancel·la
+doLogOutAllSessions=Surt de totes les sessions
+doRemove=Elimina
+doAdd=Afegeix
+doSignOut=Surt
+doLogIn=Entra
+doLink=Enllaça
+noAccessMessage=Accés no permès
+
+personalInfoSidebarTitle=Informació personal
+accountSecuritySidebarTitle=Seguretat del compte
+signingInSidebarTitle=Identificació
+deviceActivitySidebarTitle=Activitat dels dispositius
+linkedAccountsSidebarTitle=Comptes enllaçats
+
+editAccountHtmlTitle=Edita el compte
+personalInfoHtmlTitle=Informació personal
+federatedIdentitiesHtmlTitle=Identitats federades
+accountLogHtmlTitle=Registre del compte
+changePasswordHtmlTitle=Canvia la contrasenya
+deviceActivityHtmlTitle=Activitat dels dispositius
+sessionsHtmlTitle=Sessions
+accountManagementTitle=Gestor de comptes del Keycloak
+authenticatorTitle=Autenticador
+applicationsHtmlTitle=Aplicacions
+linkedAccountsHtmlTitle=Comptes enllaçats
+
+accountManagementWelcomeMessage=Us donem la benvinguda al gestor de comptes del Keycloak
+personalInfoIntroMessage=Gestioneu la vostra informació bàsica
+accountSecurityTitle=Seguretat del compte
+accountSecurityIntroMessage=Controleu la vostra contrasenya i l''accés al compte
+applicationsIntroMessage=Feu seguiment i gestioneu els permisos de les aplicacions per a accedir al vostre compte
+resourceIntroMessage=Compartiu recursos entre membres del vostre equip
+passwordLastUpdateMessage=La contrasenya es va actualitzar el
+updatePasswordTitle=Actualitza la contrasenya
+updatePasswordMessageTitle=Assegureu-vos d''establir una contrasenya forta
+updatePasswordMessage=Una contrasenya forta conté una combinació de números, lletres i símbols. És difícil d''endevinar, no es pareix a una paraula real, i només s''utilitza per a aquest compte.
+personalSubTitle=La vostra informació personal
+personalSubMessage=Gestioneu la vostra informació bàsica.
+
+authenticatorCode=Codi d''un sol ús
+email=Correu electrònic
+firstName=Nom
+givenName=Nom de pila
+fullName=Nom complet
+lastName=Cognoms
+familyName=Cognom
+password=Contrasenya
+currentPassword=Contrasenya actual
+passwordConfirm=Confirmació
+passwordNew=Contrasenya nova
+username=Nom d''usuari
+address=Adreça
+street=Carrer
+locality=Ciutat o municipi
+region=Estat, província, o regió
+postal_code=Codi postal
+country=País
+emailVerified=Correu electrònic verificat
+website=Pàgina web
+phoneNumber=Número de telèfon
+phoneNumberVerified=Número de telèfon verificat
+gender=Gènere
+birthday=Natalici
+zoneinfo=Fus horari
+gssDelegationCredential=Credencial de delegació GSS
+
+profileScopeConsentText=Perfil d''usuari
+emailScopeConsentText=Correu electrònic
+addressScopeConsentText=Adreça
+phoneScopeConsentText=Número de telèfon
+offlineAccessScopeConsentText=Accés fora de línia
+samlRoleListScopeConsentText=Els meus rols
+rolesScopeConsentText=Rols d''usuari
+
+role_admin=Administrador
+role_realm-admin=Administrador del domini
+role_create-realm=Crea un domini
+role_view-realm=Visualitza el domini
+role_view-users=Visualitza els usuaris
+role_view-applications=Visualitza les aplicacions
+role_view-groups=Visualitza els grups
+role_view-clients=Visualitza els clients
+role_view-events=Visualitza els esdeveniments
+role_view-identity-providers=Visualitza els proveïdors d''identitat
+role_view-consent=Visualitza els consentiments
+role_manage-realm=Gestiona el domini
+role_manage-users=Gestiona els usuaris
+role_manage-applications=Gestiona les aplicacions
+role_manage-identity-providers=Gestiona els proveïdors d''identitat
+role_manage-clients=Gestiona els clients
+role_manage-events=Gestiona els esdeveniments
+role_view-profile=Visualitza el perfil
+role_manage-account=Gestiona el compte
+role_manage-account-links=Gestiona els enllaços del compte
+role_manage-consent=Gestiona els consentiments
+role_read-token=Llegeix el codi d''autorització
+role_offline-access=Accés fora de línia
+role_uma_authorization=Obté permisos
+client_account=Compte
+client_account-console=Consola del compte
+client_security-admin-console=consola d''administració de seguretat
+client_admin-cli=CLI d''administració
+client_realm-management=Gestió del domini
+client_broker=Agent
+
+
+requiredFields=Camps obligatoris
+allFieldsRequired=Tots els camps són obligatoris
+
+backToApplication=&laquo; Torna a l''aplicació
+backTo=Torna a {0}
+
+date=Data
+event=Esdeveniment
+ip=IP
+client=Client
+clients=Clients
+details=Detalls
+started=Iniciat
+lastAccess=Últim accés
+expires=Caduca
+applications=Aplicacions
+
+account=Compte
+federatedIdentity=Identitat federada
+authenticator=Autenticador
+device-activity=Activitat dels dispositius
+sessions=Sessions
+log=Registre
+
+application=Aplicació
+availableRoles=Rols disponibles
+grantedPermissions=Permisos concedits
+grantedPersonalInfo=Informació personal concedida
+additionalGrants=Concessions addicionals
+action=Acció
+inResource=a
+fullAccess=Accés total
+offlineToken=Codi d''autorització fora de línia
+revoke=Revoca el permís
+
+configureAuthenticators=Autenticadors configurats
+mobile=Mòbil
+totpStep1=Instal·leu una de les aplicacions següents al vostre mòbil:
+totpStep2=Obriu l''aplicació i escanegeu el codi de barres:
+totpStep3=Introduïu el codi d''un sol ús proveït per l''aplicació i feu clic a Desa per a finalitzar la configuració.
+totpStep3DeviceName=Introduïu un nom de dispositiu per a ajudar-vos a gestionar els vostres dispositius OTP.
+
+totpManualStep2=Obriu l''aplicació i introduïu la clau:
+totpManualStep3=Utilitzeu els valors de configuració següents si l''aplicació permet establir-los:
+totpUnableToScan=No podeu escanejar?
+totpScanBarcode=Voleu escanejar el codi de barres?
+
+totp.totp=Basat en temps
+totp.hotp=Basat en comptador
+
+totpType=Tipus
+totpAlgorithm=Algoritme
+totpDigits=Dígits
+totpInterval=Interval
+totpCounter=Comptador
+totpDeviceName=Nom del dispositiu
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=Aquesta acció és irreversible
+deletingImplies=La supressió del vostre compte implica:
+errasingData=Suprimir totes les vostres dades
+loggingOutImmediately=Desconnectar-vos immediatament
+accountUnusable=Qualsevol ús posterior de l''aplicació no serà possible amb aquest compte
+
+missingUsernameMessage=Indiqueu el vostre nom d''usuari.
+missingFirstNameMessage=Indiqueu el vostre nom.
+invalidEmailMessage=L''adreça de correu electrònic no és vàlida.
+missingLastNameMessage=Indiqueu els vostres cognoms.
+missingEmailMessage=Indiqueu la vostra adreça de correu electrònic.
+missingPasswordMessage=Indiqueu la contrasenya.
+notMatchPasswordMessage=Les contrasenyes no coincideixen.
+invalidUserMessage=L''usuari no és vàlid.
+updateReadOnlyAttributesRejectedMessage=S''ha rebutjat l''actualització d''un atribut de només lectura.
+
+missingTotpMessage=Indiqueu el codi d''autenticació.
+missingTotpDeviceNameMessage=Indiqueu el nom de dispositiu.
+invalidPasswordExistingMessage=La contrasenya actual no és correcta.
+invalidPasswordConfirmMessage=La confirmació de contrasenya no coincideix.
+invalidTotpMessage=El codi d''autenticació no és vàlid.
+
+usernameExistsMessage=El nom d''usuari ja existeix.
+emailExistsMessage=El correu electrònic ja existeix.
+
+readOnlyUserMessage=No podeu actualitzar el vostre compte perquè és de només lectura.
+readOnlyUsernameMessage=No podeu actualitzar el vostre nom d''usuari perquè és de només lectura.
+readOnlyPasswordMessage=No podeu actualitzar la vostra contrasenya perquè és de només lectura.
+
+successTotpMessage=S''ha configurat l''aplicació d''autenticació mòbil.
+successTotpRemovedMessage=S''ha eliminat l''aplicació d''autenticació mòbil.
+
+successGrantRevokedMessage=S''ha revocat el permís correctament.
+
+accountUpdatedMessage=S''ha actualitzat el vostre compte.
+accountPasswordUpdatedMessage=S''ha actualitzat la vostra contrasenya.
+
+missingIdentityProviderMessage=No s''ha indicat el proveïdor d''identitat.
+invalidFederatedIdentityActionMessage=Acció no vàlida o no indicada.
+identityProviderNotFoundMessage=No s''ha trobat un proveïdor d''identitat.
+federatedIdentityLinkNotActiveMessage=Aquesta identitat ja no està activa.
+federatedIdentityRemovingLastProviderMessage=No podeu eliminar l''última identitat federada perquè no teniu establerta una contrasenya.
+identityProviderRedirectErrorMessage=No s''ha pogut redirigir al proveïdor d''identitat.
+identityProviderRemovedMessage=S''ha eliminat el proveïdor d''identitat correctament.
+identityProviderAlreadyLinkedMessage=La identitat federada retornada per {0} ja està enllaçada a un altre usuari.
+staleCodeAccountMessage=La pàgina ha caducat. Proveu-ho de nou.
+consentDenied=Consentiment rebutjat.
+access-denied-when-idp-auth=S''ha denegat l''accés mentre s''autenticava amb {0}
+
+accountDisabledMessage=El compte està inhabilitat, contacteu amb l''administrador.
+
+accountTemporarilyDisabledMessage=El compte està temporalment inhabilitat, contacteu amb l''administrador o intenteu-ho de nou més tard.
+invalidPasswordMinLengthMessage=La contrasenya no és vàlida: la llargària mínima és {0}.
+invalidPasswordMaxLengthMessage=La contrasenya no és vàlida: la llargària màxima és {0}.
+invalidPasswordMinLowerCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres minúscules.
+invalidPasswordMinDigitsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} caràcters numèrics.
+invalidPasswordMinUpperCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres majúscules.
+invalidPasswordMinSpecialCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} caràcters especials.
+invalidPasswordNotUsernameMessage=La contrasenya no és vàlida: no pot ser igual al nom d''usuari.
+invalidPasswordNotEmailMessage=La contrasenya no és vàlida: no pot ser igual al correu electrònic.
+invalidPasswordRegexPatternMessage=La contrasenya no és vàlida: no coincideix amb el patró de l''expressió regular.
+invalidPasswordHistoryMessage=La contrasenya no és vàlida: no pot ser igual a les últimes {0} contrasenyes.
+invalidPasswordBlacklistedMessage=La contrasenya no és vàlida: està en una llista negra.
+invalidPasswordGenericMessage=La contrasenya no és vàlida: la contrasenya nova no coincideix amb les polítiques de contrasenya.
+
+# Authorization
+myResources=Els meus recursos
+myResourcesSub=Els meus recursos
+doDeny=Rebutja
+doRevoke=Revoca
+doApprove=Aprova
+doRemoveSharing=Deixa de compartir
+doRemoveRequest=Retira la petició
+peopleAccessResource=Gent amb accés a aquest recurs
+resourceManagedPolicies=Permisos que concedeixen accés a aquest recurs
+resourceNoPermissionsGrantingAccess=No hi ha cap permís que concedeixi accés a aquest recurs
+anyAction=Qualsevol acció
+description=Descripció
+name=Nom
+scopes=Àmbits
+resource=Recurs
+user=Usuari
+peopleSharingThisResource=Gent compartint aquest recurs
+shareWithOthers=Comparteix amb altres
+needMyApproval=Requereix la meua aprovació
+requestsWaitingApproval=Les vostres peticions que esperen aprovació
+icon=Icona
+requestor=Sol·licitant
+owner=Propietari
+resourcesSharedWithMe=Recursos compartits amb mi
+permissionRequestion=Petició de permís
+permission=Permís
+shares=comparticions
+notBeingShared=Aquest recurs no s''està compartint.
+notHaveAnyResource=No teniu cap recurs
+noResourcesSharedWithYou=No hi ha cap recurs compartit amb vosaltres
+havePermissionRequestsWaitingForApproval=Teniu {0} peticions de permís esperant l''aprovació.
+clickHereForDetails=Feu clic aquí per a obtenir més detalls.
+resourceIsNotBeingShared=El recurs no s''està compartint
+
+locale_ar=àrab
+locale_ca=català
+locale_cs=txec
+locale_de=alemany
+locale_en=anglès
+locale_es=castellà
+locale_fr=francès
+locale_hu=hongarès
+locale_fa=persa
+locale_it=italià
+locale_ja=japonès
+locale_lt=lituà
+locale_nl=neerlandès
+locale_no=noruec
+locale_pl=polonès
+locale_pt-BR=portuguès (Brasil)
+locale_ru=rus
+locale_sk=eslovè
+locale_sv=suec
+locale_tr=turc
+locale_zh-CN=xinès simplificat
+locale_fi=finès
+
+# Applications
+applicationName=Nom
+applicationType=Tipus d''aplicació
+applicationInUse=Només aplicacions en ús
+clearAllFilter=Esborra tots els filtres
+activeFilters=Filtres actius
+filterByName=Filtra per nom…
+allApps=Totes les aplicacions
+internalApps=Aplicacions internes
+thirdpartyApps=Aplicacions de tercers
+appResults=Resultats
+clientNotFoundMessage=No s''ha trobat el client.
+
+# Linked account
+authorizedProvider=Proveïdor autoritzat
+authorizedProviderMessage=Proveïdors autoritzats enllaçats amb el vostre compte
+identityProvider=Proveïdor d''identitat
+identityProviderMessage=Per a enllaçar el vostre compte amb els proveïdors d''identitat que heu configurat
+socialLogin=Identificació social
+userDefined=Definit per l''usuari
+removeAccess=Elimina l''accés
+removeAccessMessage=Haureu de tornar a concedir l''accés de nou si voleu utilitzar el compte d''aquesta aplicació.
+
+#Authenticator
+authenticatorStatusMessage=L''autenticació de doble factor està
+authenticatorFinishSetUpTitle=La vostra autenticació de doble factor
+authenticatorFinishSetUpMessage=Cada vegada que entreu al vostre compte del Keycloak, se us demanarà que introduïu un codi d''autenticació de doble factor.
+authenticatorSubTitle=Configura l''autenticació de doble factor
+authenticatorSubMessage=Per a millorar la seguretat del vostre compte, habiliteu almenys un dels mètodes d''autenticació de doble factor.
+authenticatorMobileTitle=Autenticador mòbil
+authenticatorMobileMessage=Utilitzeu un autenticador mòbil per a obtenir codis de verificació com a autenticació de doble factor.
+authenticatorMobileFinishSetUpMessage=S''ha associat l''autenticador al vostre telèfon.
+authenticatorActionSetup=Configura
+authenticatorSMSTitle=Codi SMS
+authenticatorSMSMessage=El Keycloak enviarà el codi de verificació al vostre telèfon com a autenticació de doble factor.
+authenticatorSMSFinishSetUpMessage=Els missatges de text s''envien al
+authenticatorDefaultStatus=Predefinit
+authenticatorChangePhone=Canvia el número de telèfon
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Configuració de l''autenticador mòbil
+smscodeIntroMessage=Introduïu el vostre número de telèfon i se us enviarà un codi de verificació.
+mobileSetupStep1=Instal·leu una aplicació d''autenticació al telèfon. Les aplicacions llistades a sota són compatibles.
+mobileSetupStep2=Obriu l''aplicació i escanegeu el codi de barres:
+mobileSetupStep3=Introduïu el codi d''un sol ús proveït per l''aplicació i feu clic a Desa per a finalitzar la configuració.
+scanBarCode=Voleu escanejar el codi de barres?
+enterBarCode=Introduïu el codi d''un sol ús
+doCopy=Copia
+doFinish=Finalitza
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Configuració del codi SMS
+chooseYourCountry=Seleccioneu el vostre país
+enterYourPhoneNumber=Introduïu el vostre número de telèfon
+sendVerficationCode=Envia un codi de verificació
+enterYourVerficationCode=Introduïu el codi de verificació
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Configuració dels codis d''autenticació de recuperació
+realmName=Domini
+doDownload=Baixa
+doPrint=Imprimeix
+generateNewBackupCodes=Genera codis d''autenticació de recuperació nous
+backtoAuthenticatorPage=Torna a la pàgina de l''autenticador
+
+
+#Resources
+resources=Recursos
+sharedwithMe=Compartit amb mi
+share=Comparteix
+sharedwith=Compartit amb
+accessPermissions=Permisos d''accés
+permissionRequests=Peticions de permís
+approve=Aprova
+approveAll=Aprova-ho tot
+people=persones
+perPage=per pàgina
+currentPage=Pàgina actual
+sharetheResource=Comparteix el recurs
+group=Grup
+selectPermission=Seleccioneu el permís
+addPeople=Afegiu persones amb qui compartir els vostres recursos
+addTeam=Afegiu un equip amb qui compartir els vostres recursos
+myPermissions=Els meus permisos
+waitingforApproval=Esperant l''aprovació
+anyPermission=Qualsevol permís
+
+# Openshift messages
+openshift.scope.user_info=Informació d''usuari
+openshift.scope.user_check-access=Informació d''accessos d''usuari
+openshift.scope.user_full=Accés total
+openshift.scope.list-projects=Llista els projectes
+
+error-invalid-value=El valor no és vàlid.
+error-invalid-blank=Especifiqueu un valor.
+error-empty=Especifiqueu un valor.
+error-invalid-length=L''atribut {0} ha de tindre una llargària d''entre {1} i {2}.
+error-invalid-length-too-short=L''atribut {0} ha de tindre una llargària mínima de {1}.
+error-invalid-length-too-long=L''atribut {0} ha de tindre una llargària màxima de {2}.
+error-invalid-email=L''adreça de correu electrònic no és vàlida.
+error-invalid-number=El nombre no és vàlid.
+error-number-out-of-range=L''atribut {0} ha de ser un número entre {1} i {2}.
+error-number-out-of-range-too-small=L''atribut {0} ha de tindre valor mínim de {1}.
+error-number-out-of-range-too-big=L''atribut {0} ha de tindre valor màxim de {2}.
+error-pattern-no-match=El valor no és vàlid.
+error-invalid-uri=L''URL no és vàlid.
+error-invalid-uri-scheme=L''esquema d''URL no és vàlid.
+error-invalid-uri-fragment=El fragment d''URL no és vàlid.
+error-user-attribute-required=Especifiqueu l''atribut {0}.
+error-invalid-date=La data no és vàlida.
+error-user-attribute-read-only=El camp {0} és només de lectura.
+error-username-invalid-character=El nom d''usuari conté un caràcter no vàlid.
+error-person-name-invalid-character=El nom conté un caràcter no vàlid.
diff --git a/themes/custom-theme-template/account/messages/messages_cs.properties b/themes/custom-theme-template/account/messages/messages_cs.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6d3d264875ae69c17dc02ce40e0bf56e00ab4b7a
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_cs.properties
@@ -0,0 +1,172 @@
+doSave=Uložit
+doCancel=Zrušit
+doLogOutAllSessions=Odhlásit všechny relace
+doRemove=Odstranit
+doAdd=Přidat
+doSignOut=Odhlásit se
+
+editAccountHtmlTitle=Upravit účet
+federatedIdentitiesHtmlTitle=Propojené identity
+accountLogHtmlTitle=Log účtu
+changePasswordHtmlTitle=Změnit heslo
+sessionsHtmlTitle=Relace
+accountManagementTitle=Správa účtů Keycloak
+authenticatorTitle=Autentizátor
+applicationsHtmlTitle=Aplikace
+
+authenticatorCode=Jednorázový kód
+email=E-mail
+firstName=První křestní jméno
+givenName=Křestní jména
+fullName=Celé jméno
+lastName=Příjmení
+familyName=Rodinné jméno
+password=Heslo
+passwordConfirm=Nové heslo (znovu)
+passwordNew=Nové heslo
+username=Uživatelské jméno
+address=Adresa
+street=Ulice
+locality=Město nebo lokalita
+region=Kraj
+postal_code=PSČ
+country=Stát
+emailVerified=E-mail ověřen
+gssDelegationCredential=GSS delegované oprávnění
+
+role_admin=Správce
+role_realm-admin=Správce realmu
+role_create-realm=Vytvořit realm
+role_view-realm=Zobrazit realm
+role_view-users=Zobrazit uživatele
+role_view-applications=Zobrazit aplikace
+role_view-clients=Zobrazit klienty
+role_view-events=Zobrazit události
+role_view-identity-providers=Zobrazit poskytovatele identity
+role_manage-realm=Spravovat realm
+role_manage-users=Spravovat uživatele
+role_manage-applications=Spravovat aplikace
+role_manage-identity-providers=Spravovat poskytovatele identity
+role_manage-clients=Spravovat klienty
+role_manage-events=Spravovat události
+role_view-profile=Zobrazit profil
+role_manage-account=Spravovat účet
+role_manage-account-links=Spravovat odkazy na účet
+role_read-token=Číst token
+role_offline-access=Přístup offline
+role_uma_authorization=Získání oprávnění
+client_account=Účet
+client_security-admin-console=Administrátorská bezpečnostní konzole
+client_admin-cli=Administrátorské CLI
+client_realm-management=Správa realmů
+client_broker=Broker
+
+
+requiredFields=Požadovaná pole
+allFieldsRequired=Všechna pole vyžadovaná
+
+backToApplication=&laquo; Zpět na aplikaci
+backTo=Zpět na {0}
+
+date=Datum
+event=Událost
+ip=IP
+client=Klient
+clients=Klienti
+details=Podrobnosti
+started=Zahájeno
+lastAccess=Poslední přístup
+expires=Vyprší
+applications=Aplikace
+
+account=Účet
+federatedIdentity=Propojená identita
+authenticator=Autentizátor
+sessions=Relace
+log=Log
+
+application=Aplikace
+availablePermissions=Dostupná oprávnění
+grantedPermissions=Udělené oprávnění
+grantedPersonalInfo=Poskytnuté osobní informace
+additionalGrants=Dodatečné oprávnění
+action=Akce
+inResource=v
+fullAccess=Úplný přístup
+offlineToken=Offline Token
+revoke=Zrušit oprávnění
+
+configureAuthenticators=Konfigurované autentizátory
+mobile=Mobilní
+totpStep1=Nainstalujte jednu z následujících aplikací
+totpStep2=Otevřete aplikaci a naskenujte čárový kód
+totpStep3=Zadejte jednorázový kód poskytnutý aplikací a klepnutím na tlačítko Uložit dokončete nastavení.
+
+totpManualStep2=Otevřete aplikaci a zadejte klíč
+totpManualStep3=Použijte následující hodnoty konfigurace, pokud aplikace umožňuje jejich nastavení
+totpUnableToScan=Nelze skenovat?
+totpScanBarcode=Skenovat čárový kód?
+
+totp.totp=Založeno na čase
+totp.hotp=Založeno na čítači
+
+totpType=Typ
+totpAlgorithm=Algoritmus
+totpDigits=Číslice
+totpInterval=Interval
+totpCounter=Čítač
+
+missingUsernameMessage=Zadejte uživatelské jméno.
+missingFirstNameMessage=Zadejte prosím křestní jméno.
+invalidEmailMessage=Neplatná e-mailová adresa.
+missingLastNameMessage=Zadejte prosím příjmení.
+missingEmailMessage=Zadejte prosím e-mail.
+missingPasswordMessage=Zadejte prosím heslo.
+notMatchPasswordMessage=Hesla se neshodují.
+
+missingTotpMessage=Zadejte prosím kód autentizátoru.
+invalidPasswordExistingMessage=Neplatné stávající heslo.
+invalidPasswordConfirmMessage=Nová hesla se neshodují.
+invalidTotpMessage=Neplatný kód autentizátoru.
+
+usernameExistsMessage=Uživatelské jméno již existuje.
+emailExistsMessage=E-mail již existuje.
+
+readOnlyUserMessage=Nemůžete svůj účet aktualizovat, protože je pouze pro čtení.
+readOnlyUsernameMessage=Nemůžete aktualizovat své uživatelské jméno, protože je pouze pro čtení.
+readOnlyPasswordMessage=Nemůžete aktualizovat své heslo, protože váš účet je jen pro čtení.
+
+successTotpMessage=Ověření pomocí OTP úspěšně konfigurováno.
+successTotpRemovedMessage=Ověření pomocí OTP úspěšně odstraněno.
+
+successGrantRevokedMessage=Oprávnění bylo úspěšně zrušeno.
+
+accountUpdatedMessage=Váš účet byl aktualizován.
+accountPasswordUpdatedMessage=Vaše heslo bylo aktualizováno.
+
+missingIdentityProviderMessage=Chybějící poskytovatel identity.
+invalidFederatedIdentityActionMessage=Neplatná nebo chybějící akce.
+identityProviderNotFoundMessage=Poskytovatel identity nenalezen.
+federatedIdentityLinkNotActiveMessage=Tato identita již není aktivní.
+federatedIdentityRemovingLastProviderMessage=Nemůžete odstranit poslední propojenou identitu, protože nemáte heslo.
+identityProviderRedirectErrorMessage=Nepodařilo se přesměrovat na poskytovatele identity.
+identityProviderRemovedMessage=Poskytovatel identity byl úspěšně odstraněn.
+identityProviderAlreadyLinkedMessage=Propojená identita vrácená uživatelem {0} je již propojena s jiným uživatelem.
+staleCodeAccountMessage=Platnost vypršela. Zkuste to ještě jednou.
+consentDenied=Souhlas byl zamítnut.
+
+accountDisabledMessage=Účet je zakázán, kontaktujte správce.
+
+accountTemporarilyDisabledMessage=Účet je dočasně zakázán, kontaktujte správce nebo zkuste to později.
+invalidPasswordMinLengthMessage=Neplatné heslo: musí obsahovat minimálně {0} malých znaků.
+invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovat minimálně {0} malé znaky.
+invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovat nejméně {0} číslic.
+invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} velkých písmenen.
+invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} speciálních znaků.
+invalidPasswordNotUsernameMessage=Neplatné heslo: nesmí být totožné s uživatelským jménem.
+invalidPasswordRegexPatternMessage=Neplatné heslo: neshoduje se zadaným regulárním výrazem.
+invalidPasswordHistoryMessage=Neplatné heslo: Nesmí se opakovat žádné z posledních {0} hesel.
+invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na černé listině.
+invalidPasswordGenericMessage=Neplatné heslo: nové heslo neodpovídá pravidlům hesla.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_da.properties b/themes/custom-theme-template/account/messages/messages_da.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a7184210556efd97e800d93facbbe467944b81cd
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_da.properties
@@ -0,0 +1,339 @@
+doSave=Gem
+doCancel=Annuller
+doLogOutAllSessions=Log alle sessioner ud
+doRemove=Fjern
+doAdd=Tilføj
+doSignOut=Log Ud
+doLogIn=Log Ind
+doLink=Link
+
+editAccountHtmlTitle=Ændre Konto
+personalInfoHtmlTitle=Personlig information
+federatedIdentitiesHtmlTitle=Forbundne identiter
+accountLogHtmlTitle=Konto Log
+changePasswordHtmlTitle=Skift Adgangskode
+deviceActivityHtmlTitle=Enheds aktivitet
+sessionsHtmlTitle=Sessioner
+accountManagementTitle=Keycloak Account Management
+authenticatorTitle=Authenticator
+applicationsHtmlTitle=Applikationer
+linkedAccountsHtmlTitle=Linkede konti
+
+accountManagementWelcomeMessage=Velkommen til Keycloak Account Management
+personalInfoIntroMessage=Administrer dine informationer
+accountSecurityTitle=Kontosikkerhed
+accountSecurityIntroMessage=Kontroller din adgangskode og kontoadgang.
+applicationsIntroMessage=Spor og administrer dine app tilladelser for at tilgå din konto
+resourceIntroMessage=Del dine ressourcer med team medlemmer
+passwordLastUpdateMessage=Din adgangskode blev opdateret
+updatePasswordTitle=Opdater Adgangskode
+updatePasswordMessageTitle=Sørg for at vælge en stærk adgangskode
+updatePasswordMessage=En stærk adgangskode indeholder en blanding af tal, bogstaver og symboler. Det er svært at gætte, ligner ikke et rigtigt ord og bør kun bruges til denne konto.
+personalSubTitle=Dine Personlige Informationer
+personalSubMessage=Administrer disse grundinformationer; dit fornavn, efternavn og email adresse
+
+authenticatorCode=Engangskode
+email=Email
+firstName=Fornavn
+givenName=Fornavn
+fullName=Fulde navn
+lastName=Efternavn
+familyName=Efternavn
+password=Adgangskode
+currentPassword=Nuværende Adgangskode
+passwordConfirm=Bekræft ny adgangskode
+passwordNew=Ny adgangskode
+username=Brugernavn
+address=Adresse
+street=Vejnavn
+locality=By
+region=Region
+postal_code=Postnummer
+country=Land
+emailVerified=Email verificeret
+gssDelegationCredential=GSS Delegation Credential
+
+profileScopeConsentText=Brugerprofil
+emailScopeConsentText=Email adresse
+addressScopeConsentText=Adresse
+phoneScopeConsentText=Telefonnummer
+offlineAccessScopeConsentText=Offline Adgang
+samlRoleListScopeConsentText=Mine Roller
+
+role_admin=Admin
+role_realm-admin=Rige Admin
+role_create-realm=Opret rige
+role_create-client=Opret klient
+role_view-realm=Se rige
+role_view-users=Se brugere
+role_view-applications=Se applikationer
+role_view-clients=Se klienter
+role_view-events=Se hændelser
+role_view-identity-providers=Se identitetsudbydere
+role_manage-realm=Administrer rige
+role_manage-users=Administrer brugere
+role_manage-applications=Administrer applikationer
+role_manage-identity-providers=Administrer identitetsudbydere
+role_manage-clients=Administrer klienter
+role_manage-events=Administrer hændelser
+role_view-profile=Se profil
+role_manage-account=Administrer konto
+role_manage-account-links=Administrer konto links
+role_read-token=Se token
+role_offline-access=Offline adgang
+client_account=Konto
+client_security-admin-console=Sikkerheds Admin Konsol
+client_admin-cli=Admin CLI
+client_realm-management=Rige administration
+client_broker=Broker
+
+
+requiredFields=Påkrævede felter
+allFieldsRequired=Alle felter er påkrævede
+
+backToApplication=&laquo; Tilbage til applikation
+backTo=Tilbage til {0}
+
+date=Dato
+event=Hændelse
+ip=IP
+client=Klient
+clients=Klienter
+details=Detaljer
+started=Påbegyndt
+lastAccess=Seneste Adgang
+expires=Udløber
+applications=Applikationer
+
+account=Konto
+federatedIdentity=Federated Identity
+authenticator=Authenticator
+device-activity=Enheds aktivitet
+sessions=Sessioner
+log=Log
+
+application=Applikation
+availableRoles=Tilgængelige Roller
+grantedPermissions=Tildelte Rettigheder
+grantedPersonalInfo=Tildelt Personlig Info
+additionalGrants=Yderligere Tildelinger
+action=Action
+inResource=i
+fullAccess=Fuld adgang
+offlineToken=Offline Token
+revoke=Tilbagekald tildeling
+
+configureAuthenticators=Konfigurerede Authenticators
+mobile=Mobil
+totpStep1=Installer en af følgende applikationer på din mobil
+totpStep2=Åben applikationen og skan stregkoden
+totpStep3=Indtast engangskoden fra applikationen og tryk Indsend for at gennemføre opsætningen
+
+totpManualStep2=Åben applikationen og indtast nøglen
+totpManualStep3=Brug følgende konfigurations værdier hvis applikationen tillader det
+
+totpUnableToScan=Kan du ikke skanne?
+totpScanBarcode=Skan stregkode?
+
+totp.totp=Tidsbaseret
+totp.hotp=Tællerbaseret
+
+totpType=Type
+totpAlgorithm=Algoritme
+totpDigits=Tal
+totpInterval=Interval
+totpCounter=Tæller
+
+missingUsernameMessage=Angiv brugernavn
+missingFirstNameMessage=Angiv fornavn.
+invalidEmailMessage=Ugyldig email adresse.
+missingLastNameMessage=Angiv efternavn
+missingEmailMessage=Angiv email adresse.
+missingPasswordMessage=Angiv adgangskode
+notMatchPasswordMessage=Adgangskoderne er ikke ens
+invalidUserMessage=Ugyldig bruger
+
+missingTotpMessage=Angiv autentificerings kode.
+invalidPasswordExistingMessage=Ugyldig eksisterende adgangskode.
+invalidPasswordConfirmMessage=Adgangskoderne er ikke ens
+invalidTotpMessage=Ugyldig autentificerings kode.
+
+usernameExistsMessage=Brugernavnet eksisterer allerede.
+emailExistsMessage=Email adressen eksisterer allerede.
+
+readOnlyUserMessage=Du kan ikke opdatere din konto da den er read-only.
+readOnlyUsernameMessage=Du kan ikke opdatere dit brugernavn da det er read-only.
+readOnlyPasswordMessage=Du kan ikke opdatere din adgangskode da den er read-only.
+
+successTotpMessage=Mobil authenticator konfigureret.
+successTotpRemovedMessage=Mobil authenticator fjernet.
+
+successGrantRevokedMessage=Tildeling tilbagekaldt.
+
+accountUpdatedMessage=Din konto er blevet opdateret.
+accountPasswordUpdatedMessage=Din adgangskode er blevet opdateret.
+
+missingIdentityProviderMessage=Identitetsudbyder ikke specificeret.
+invalidFederatedIdentityActionMessage=Ugyldig eller manglende handling.
+identityProviderNotFoundMessage=Den angivede identitetsudbyder kunne ikke findes.
+federatedIdentityLinkNotActiveMessage=Denne identiet er ikke aktiv længere.
+identityProviderRedirectErrorMessage=Kunne ikke redirecte til identitetsudbyder.
+identityProviderRemovedMessage=Identitetsudbyder fjernet.
+identityProviderAlreadyLinkedMessage=Forbundsidentitet returneret af {} er allerede forbundet til en anden bruger.
+staleCodeAccountMessage=Siden er udløbet. Prøv igen.
+consentDenied=Samtykke afslået.
+
+accountDisabledMessage=Kontoen er deaktiveret, kontakt en administrator.
+
+accountTemporarilyDisabledMessage=Kontoen er midlertidigt deaktiveret, kontakt en administrator eller prøv igen senere.
+invalidPasswordMinLengthMessage=Ugyldig adgangskode: minimum længde {0}.
+invalidPasswordMinLowerCaseCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} små bogstaver.
+invalidPasswordMinDigitsMessage=Ugyldig adgangskode: skal minimum indeholde {0} tal.
+invalidPasswordMinUpperCaseCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} store bogstaver.
+invalidPasswordMinSpecialCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} specialtegn.
+invalidPasswordNotUsernameMessage=Ugyldig adgangskode: må ikke være identisk med brugernavnet.
+invalidPasswordRegexPatternMessage=Ugyldig adgangskode: Ikke i stand til at matche regex mønstre.
+invalidPasswordHistoryMessage=Ugyldig adgangskode: må ikke være identisk med nogle af de seneste {0} adgangskoder.
+invalidPasswordBlacklistedMessage=Ugyldig adgangskode: adgangskoden er sortlisted.
+invalidPasswordGenericMessage=Ugyldig adgangskode: ny adgangskode matcher ikke vores adgangskode politikker.
+
+# Authorization
+myResources=Mine Ressourcer
+myResourcesSub=Mine ressourcer
+doDeny=Afslå
+doRevoke=Tilbagekald
+doApprove=Godkend
+doRemoveSharing=Fjern Deling
+doRemoveRequest=Fjern Forespørgsel
+peopleAccessResource=Folk med adgang til denne ressource
+resourceManagedPolicies=Tilladelsen som giver adgang til denne ressource
+resourceNoPermissionsGrantingAccess=Ingen tilladelser giver adgang til denne ressource
+anyAction=Enhver handling
+description=Beskrivelse
+name=Navn
+scopes=Scopes
+resource=Ressource
+user=Bruger
+peopleSharingThisResource=Folk som deler denne ressource
+shareWithOthers=Del med andre
+needMyApproval=Mangler min godkendelse
+requestsWaitingApproval=Din forespørgsel afventer godkendelse
+icon=Ikon
+requestor=Forespørger
+owner=Ejer
+resourcesSharedWithMe=Ressourcer delt med mig
+permissionRequestion=Rettigsheds forespørgsel
+permission=Tilladelse
+shares=share(s)
+
+locale_ca=Català
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fr=Français
+locale_it=Italian
+locale_ja=日本語
+locale_nl=Nederlands
+locale_no=Norsk
+locale_lt=Lietuvių
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_zh-CN=中文简体
+
+# Applications
+applicationName=Navn
+applicationType=Applikationstype
+applicationInUse=In-use app only
+clearAllFilter=Ryd alle filtre
+activeFilters=Aktive filtre
+filterByName=Filtrer På Navn...
+allApps=Alle applikationer
+internalApps=Interne applikationer
+thirdpartyApps=Tredje-parts applikationer
+appResults=Resultater
+
+# Linked account
+authorizedProvider=Autoriseret Udbyder
+authorizedProviderMessage=Autoriserede udbydere forbundet med din konto
+
+identityProvider=Identitetsudbyder
+identityProviderMessage=For at forbinde din konto med de identitetsudbydere du har konfigureret
+socialLogin=Social Log ind
+userDefined=Brugerdefineret
+removeAccess=Fjern Adgang
+removeAccessMessage=Du skal give adgang igen, hvis du vil bruge denne app konto.
+
+#Authenticator
+authenticatorStatusMessage=To-faktor godkendelse er
+authenticatorFinishSetUpTitle=Din to-faktor godkendelse
+authenticatorFinishSetUpMessage=Hver gang du logger ind på din Keycloak konto, vil du blive bedt om at give din to-faktor godkendelses kode.
+authenticatorSubTitle=Opsæt to-faktor godkendelse
+authenticatorSubMessage=For at forbedre sikkerheden på din konto, aktiver mindst en af de tilgængelige to-faktor godkendelses metoder.
+authenticatorMobileTitle=Mobile Authenticator
+authenticatorMobileMessage=Brug Mobile Authenticator for at få godkendelses koder som to-faktor godkendelse.
+authenticatorMobileFinishSetUpMessage=Authenticatoren er blevet bundet til din telefon.
+authenticatorActionSetup=Opsæt
+authenticatorSMSTitle=SMS Kode
+authenticatorSMSMessage=Keycloak vil sende godkendelses koden til din telefon som to-faktor godkendelse.
+
+authenticatorSMSFinishSetUpMessage=Tekst beskeder er sendt til
+authenticatorDefaultStatus=Standard
+authenticatorChangePhone=Ændre Telefonnummer
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobile Authenticator Opsætning
+smscodeIntroMessage=Indtast dit mobil nummer og en verifikationskode vil blive sendt til din telefon.
+mobileSetupStep1=Installer en authenticator applikation på din telefon. De understøttede applikationer er listed her.
+mobileSetupStep2=Åben applikationen og skan stregkoden.
+mobileSetupStep3=Indtast engangskoden fra authenticator applikationen og tryk Gem for at færdiggøre opsætningen.
+scanBarCode=Vil du skanne stregkoden?
+enterBarCode=Indtast engangskoden
+doCopy=Kopier
+doFinish=Afslut
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS Kode Opsætning
+chooseYourCountry=Vælg dit land
+enterYourPhoneNumber=Indtast dit telefonnummer
+sendVerficationCode=Send Verifikationskode
+enterYourVerficationCode=Indtast din verifikationskode
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Backup Kode Opsætning
+realmName=Rige
+doDownload=Download
+doPrint=Print
+doCopy=Kopier
+generateNewBackupCodes=Generer Nye Backup Koder
+backtoAuthenticatorPage=Tilbage til Authenticator siden
+
+
+#Resources
+resources=Ressourcer
+myResources=Mine Ressourcer
+sharedwithMe=Delt med mig
+share=Del
+resource=Ressource
+application=Applikation
+date=Dato
+sharedwith=Delt med
+owner=Ejer
+accessPermissions=Adgangstilladelser
+permissionRequests=Rettigheds forespørgsler
+approve=Godkend
+approveAll=Godkend alle
+sharedwith=Delt med
+people=Folk
+perPage=per side
+currentPage=Nuværende Side
+sharetheResource=Del Ressourcen
+user=Bruger
+group=Gruppe
+selectPermission=Vælg tilladelse
+addPeople=Tilføj folk at dele ressourcen med
+addTeam=Tilføj hold at dele ressourcen med
+myPermissions=Mine Tilladelser
+waitingforApproval=Afventer godkendelse
diff --git a/themes/custom-theme-template/account/messages/messages_de.properties b/themes/custom-theme-template/account/messages/messages_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c43ce268dd96540d5ca42fe207d17913bb2b80b8
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_de.properties
@@ -0,0 +1,355 @@
+doSave=Speichern
+doCancel=Abbrechen
+doLogOutAllSessions=Alle Sitzungen abmelden
+doRemove=Entfernen
+doAdd=Hinzufügen
+doSignOut=Abmelden
+doLogIn=Anmelden
+doLink=Verknüpfen
+noAccessMessage=Zugriff verweigert
+
+personalInfoSidebarTitle=Persönliche Informationen
+accountSecuritySidebarTitle=Kontosicherheit
+signingInSidebarTitle=Anmeldung
+deviceActivitySidebarTitle=Geräteaktivität
+linkedAccountsSidebarTitle=Verknüpfte Konten
+
+editAccountHtmlTitle=Benutzerkonto bearbeiten
+personalInfoHtmlTitle=Persönliche Informationen
+federatedIdentitiesHtmlTitle=Föderierte Identitäten
+accountLogHtmlTitle=Benutzerkonto-Protokoll
+changePasswordHtmlTitle=Passwort ändern
+deviceActivityHtmlTitle=Geräteaktivität
+sessionsHtmlTitle=Sitzungen
+accountManagementTitle=Keycloak-Benutzerkontoverwaltung
+authenticatorTitle=Mehrfachauthentifizierung
+applicationsHtmlTitle=Applikationen
+linkedAccountsHtmlTitle=Verknüpfte Konten
+
+accountManagementWelcomeMessage=Willkommen bei der Keycloak-Kontoverwaltung
+personalInfoIntroMessage=Grundlegende Informationen verwalten
+accountSecurityTitle=Kontosicherheit
+accountSecurityIntroMessage=Passwort und Kontozugriff verwalten
+applicationsIntroMessage=App-Berechtigung für den Zugriff auf Ihr Konto verwalten
+resourceIntroMessage=Ressourcen mit Teammitgliedern teilen
+passwordLastUpdateMessage=Ihr Passwort wurde aktualisiert am
+updatePasswordTitle=Passwort aktualisieren
+updatePasswordMessageTitle=Wählen Sie ein sicheres Passwort
+updatePasswordMessage=Ein sicheres Passwort besteht aus einer Kombination aus Zahlen, Buchstaben und Sonderzeichen. Es ist schwer zu erraten, hat keine Ähnlichkeit mit einem echten Wort, und wird nur für dieses Konto verwendet.
+personalSubTitle=Ihre persönlichen Informationen
+personalSubMessage=Verwalten Sie folgende Informationen: Vorname, Nachname und E-Mail-Adresse
+
+authenticatorCode=Einmalcode
+email=E-Mail
+firstName=Vorname
+givenName=Vorname
+fullName=Voller Name
+lastName=Nachname
+familyName=Nachname
+password=Passwort
+currentPassword=Aktuelles Passwort
+passwordConfirm=Passwort bestätigen
+passwordNew=Neues Passwort
+username=Benutzername
+address=Adresse
+street=Straße
+region=Bundesland, Kanton oder Region
+postal_code=PLZ
+locality=Stadt oder Ortschaft
+country=Land
+emailVerified=E-Mail verifiziert
+website=Website
+phoneNumber=Telefonnummer
+phoneNumberVerified=Telefonnummer verifiziert
+gender=Geschlecht
+birthday=Geburtsdatum
+zoneinfo=Zeitzone
+gssDelegationCredential=GSS-delegierte Berechtigung
+
+profileScopeConsentText=Nutzerkonto
+emailScopeConsentText=E-Mail-Adresse
+addressScopeConsentText=Adresse
+phoneScopeConsentText=Telefonnummer
+offlineAccessScopeConsentText=Offlinezugriff
+samlRoleListScopeConsentText=Meine Rollen
+rolesScopeConsentText=Nutzerrollen
+
+role_admin=Admin
+role_realm-admin=Realm-Admin
+role_create-realm=Realm erstellen
+role_view-realm=Realm ansehen
+role_view-users=Benutzer ansehen
+role_view-applications=Applikationen ansehen
+role_view-clients=Clients ansehen
+role_view-events=Events ansehen
+role_view-identity-providers=Identitätsprovider ansehen
+role_view-consent=Zustimmungen anzeigen
+role_manage-realm=Realm verwalten
+role_manage-users=Benutzer verwalten
+role_manage-applications=Applikationen verwalten
+role_manage-identity-providers=Identitätsprovider verwalten
+role_manage-clients=Clients verwalten
+role_manage-events=Events verwalten
+role_view-profile=Profile ansehen
+role_manage-account=Profile verwalten
+role_manage-account-links=Profil-Links verwalten
+role_manage-consent=Zustimmungen verwalten
+role_read-token=Token lesen
+role_offline-access=Offline-Zugriff
+role_uma_authorization=Berechtigungen einholen
+client_account=Clientkonto
+client_account-console=Accountkonsole
+client_security-admin-console=Security-Adminkonsole
+client_admin-cli=Admin CLI
+client_realm-management=Realm-Management
+client_broker=Broker
+
+
+requiredFields=Erforderliche Felder
+allFieldsRequired=Alle Felder sind erforderlich
+
+backToApplication=&laquo; Zurück zur Applikation
+backTo=Zurück zu {0}
+
+date=Datum
+event=Ereignis
+ip=IP
+client=Client
+clients=Clients
+details=Details
+started=Startdatum
+lastAccess=Letzter Zugriff
+expires=Ablaufdatum
+applications=Applikationen
+
+account=Benutzerkonto
+federatedIdentity=Föderierte Identität
+authenticator=Mehrfachauthentifizierung
+device-activity=Geräteaktivität
+sessions=Sitzungen
+log=Protokoll
+
+application=Applikation
+availablePermissions=verfügbare Berechtigungen
+grantedPermissions=gewährte Berechtigungen
+grantedPersonalInfo=gewährte persönliche Informationen
+additionalGrants=zusätzliche Berechtigungen
+action=Aktion
+inResource=in
+fullAccess=Vollzugriff
+offlineToken=Offline-Token
+revoke=Berechtigung widerrufen
+
+configureAuthenticators=Mehrfachauthentifizierung konfigurieren
+mobile=Smartphone
+totpStep1=Installieren Sie eine der folgenden Applikationen auf Ihrem Smartphone:
+totpStep2=Öffnen Sie die Applikation und scannen Sie den Barcode.
+totpStep3=Geben Sie den von der Applikation generierten Einmalcode ein und klicken Sie auf Speichern.
+totpStep3DeviceName=Geben Sie einen Gerätenamen an, um die Verwaltung Ihrer OTP-Geräte zu erleichtern.
+
+totpManualStep2=Öffnen Sie die Applikation und geben Sie den folgenden Schlüssel ein.
+totpManualStep3=Verwenden Sie die folgenden Konfigurationswerte, falls Sie diese für die Applikation anpassen können:
+totpUnableToScan=Sie können den Barcode nicht scannen?
+totpScanBarcode=Barcode scannen?
+
+totp.totp=zeitbasiert (time-based)
+totp.hotp=zählerbasiert (counter-based)
+
+totpType=Typ
+totpAlgorithm=Algorithmus
+totpDigits=Ziffern
+totpInterval=Intervall
+totpCounter=Zähler
+totpDeviceName=Gerätename
+
+irreversibleAction=Diese Aktion ist unwiderruflich
+deletingImplies=Die Löschung Ihres Kontos bedeutet:
+errasingData=Löschen aller Ihrer Daten
+loggingOutImmediately=Sofortige Abmeldung
+accountUnusable=Eine spätere Nutzung der Anwendung ist mit diesem Konto nicht mehr möglich
+
+missingUsernameMessage=Bitte geben Sie einen Benutzernamen ein.
+missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
+invalidEmailMessage=Ungültige E-Mail Adresse.
+missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
+missingEmailMessage=Bitte geben Sie eine E-Mail Adresse ein.
+missingPasswordMessage=Bitte geben Sie ein Passwort ein.
+notMatchPasswordMessage=Die Passwörter sind nicht identisch.
+invalidUserMessage=Ungültiger Nutzer
+
+missingTotpMessage=Bitte geben Sie den Einmalcode ein.
+missingTotpDeviceNameMessage=Bitte geben Sie einen Gerätenamen an.
+invalidPasswordExistingMessage=Das aktuelle Passwort ist ungültig.
+invalidPasswordConfirmMessage=Die Passwortbestätigung ist nicht identisch.
+invalidTotpMessage=Ungültiger Einmalcode.
+
+usernameExistsMessage=Der Benutzername existiert bereits.
+emailExistsMessage=Die E-Mail-Adresse existiert bereits.
+
+readOnlyUserMessage=Sie können Ihr Benutzerkonto nicht ändern, da es schreibgeschützt ist.
+readOnlyUsernameMessage=Sie können Ihren Benutzernamen nicht ändern, da er schreibgeschützt ist.
+readOnlyPasswordMessage=Sie können Ihr Passwort nicht ändern, da es schreibgeschützt ist.
+
+successTotpMessage=Mehrfachauthentifizierung erfolgreich konfiguriert.
+successTotpRemovedMessage=Mehrfachauthentifizierung erfolgreich entfernt.
+
+successGrantRevokedMessage=Berechtigung erfolgreich widerrufen.
+
+accountUpdatedMessage=Ihr Benutzerkonto wurde aktualisiert.
+accountPasswordUpdatedMessage=Ihr Passwort wurde aktualisiert.
+
+missingIdentityProviderMessage=Identitätsprovider nicht angegeben.
+invalidFederatedIdentityActionMessage=Ungültige oder fehlende Aktion.
+identityProviderNotFoundMessage=Angegebener Identitätsprovider nicht gefunden.
+federatedIdentityLinkNotActiveMessage=Diese Identität ist nicht mehr aktiv.
+federatedIdentityRemovingLastProviderMessage=Sie können den letzten Eintrag nicht entfernen, da Sie kein Passwort haben.
+identityProviderRedirectErrorMessage=Fehler bei der Weiterleitung zum Identitätsprovider.
+identityProviderRemovedMessage=Identitätsprovider erfolgreich entfernt.
+identityProviderAlreadyLinkedMessage=Die föderierte Identität von {0} ist bereits einem anderen Benutzer zugewiesen.
+staleCodeAccountMessage=Diese Seite ist nicht mehr gültig, bitte versuchen Sie es noch einmal.
+consentDenied=Einverständnis verweigert.
+
+accountDisabledMessage=Ihr Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
+
+accountTemporarilyDisabledMessage=Ihr Benutzerkonto ist temporär gesperrt, bitte kontaktieren Sie den Admin oder versuchen Sie es später noch einmal.
+invalidPasswordMinLengthMessage=Ungültiges Passwort: Es muss mindestens {0} Zeichen lang sein.
+invalidPasswordMinLowerCaseCharsMessage=Ungültiges Passwort: Es muss mindestens {0} Kleinbuchstaben beinhalten.
+invalidPasswordMinDigitsMessage=Ungültiges Passwort: Es muss mindestens {0} Zahl(en) beinhalten.
+invalidPasswordMinUpperCaseCharsMessage=Ungültiges Passwort: Es muss mindestens {0} Großbuchstaben beinhalten.
+invalidPasswordMinSpecialCharsMessage=Ungültiges Passwort: Es muss mindestens {0} Sonderzeichen beinhalten.
+invalidPasswordNotUsernameMessage=Ungültiges Passwort: Es darf nicht gleich sein wie der Benutzername.
+invalidPasswordNotEmailMessage=Ungültiges Passwort: darf nicht identisch mit der E-Mail-Adresse sein.
+invalidPasswordRegexPatternMessage=Ungültiges Passwort: Es entspricht nicht dem Regex-Muster.
+invalidPasswordHistoryMessage=Ungültiges Passwort: Es darf nicht einem der letzten {0} Passwörter entsprechen.
+invalidPasswordBlacklistedMessage=Ungültiges Passwort: Das Passwort steht auf der Blockliste.
+invalidPasswordGenericMessage=Ungültiges Passwort: Das neue Passwort verletzt die Passwort-Richtlinien.
+
+# Authorization
+myResources=Meine Ressourcen
+myResourcesSub=Meine Ressourcen
+doDeny=Ablehnen
+doRevoke=Widerrufen
+doApprove=Genehmigen
+doRemoveSharing=Freigabe entfernen
+doRemoveRequest=Anfrage entfernen
+peopleAccessResource=Personen mit Zugriff auf diese Ressource
+resourceManagedPolicies=Berechtigungen, die Zugriff auf diese Ressource gewähren
+resourceNoPermissionsGrantingAccess=Keine Berechtigungen, die Zugriff auf diese Ressource gewähren
+anyAction=Jede Aktion
+description=Beschreibung
+name=Name
+scopes=Geltungsbereiche
+resource=Ressource
+user=Nutzer
+peopleSharingThisResource=Personen, die diese Ressource teilen
+shareWithOthers=Mit anderen teilen
+needMyApproval=Braucht meine Zustimmung
+requestsWaitingApproval=Ihre Anfragen, die auf Genehmigung warten
+icon=Icon
+requestor=Antragstellender
+owner=Besitzender
+resourcesSharedWithMe=Mit mir geteilte Ressourcen
+permissionRequestion=Genehmigungsanfrage
+permission=Genehmigung
+shares=teilt/teilen
+notBeingShared=Diese Ressource wurde nicht freigegeben.
+notHaveAnyResource=Sie haben keine Ressourcen
+noResourcesSharedWithYou=Es wurden keine Ressourcen mit Ihnen geteilt
+havePermissionRequestsWaitingForApproval=Sie haben {0} Genehmigungsanfrage(n), die auf Genehmigung warten.
+clickHereForDetails=Klicken Sie hier für Details.
+resourceIsNotBeingShared=Die Ressource wurde nicht freigegeben
+
+# Applications
+applicationName=Anwendungsname
+applicationType=Anwendungstyp
+applicationInUse=Nur verwendete Anwendungen
+clearAllFilter=Alle Filter entfernen
+activeFilters=Aktive Filter
+filterByName=Nach Namen filtern ...
+allApps=Alle Anwendungen
+internalApps=Interne Anwendungen
+thirdpartyApps=Anwendungen von Drittanbietern
+appResults=Ergebnisse
+clientNotFoundMessage=Client nicht gefunden.
+
+# Linked account
+authorizedProvider=Autorisierter Provider
+authorizedProviderMessage=Autorisierte Provider, die mit Ihrem Konto verknüpft sind
+identityProvider=Identitätsprovider
+identityProviderMessage=Verknüpfen Sie Ihr Konto mit Identitätsprovidern, die Sie konfiguriert haben
+socialLogin=Social Login
+userDefined=Benutzerdefiniert
+removeAccess=Zugriff entfernen
+removeAccessMessage=Sie müssen den Zugriff erneut gewähren, wenn Sie diese Anwendung verwenden möchten.
+
+#Authenticator
+authenticatorStatusMessage=Zwei-Faktor-Authentifizierung ist zurzeit
+authenticatorFinishSetUpTitle=Ihre Zwei-Faktor-Authentifizierung
+authenticatorFinishSetUpMessage=Jedes Mal, wenn Sie sich bei Ihrem Keycloak-Konto anmelden, werden Sie aufgefordert, einen Zwei-Faktor-Authentifizierungscode einzugeben.
+authenticatorSubTitle=Zwei-Faktor-Authentifizierung einrichten
+authenticatorSubMessage=Um die Sicherheit Ihres Kontos zu erhöhen, aktivieren Sie mindestens eine der verfügbaren Zwei-Faktor-Authentifizierungsmethoden.
+authenticatorMobileTitle=Handy-Authentifikator
+authenticatorMobileMessage=Verwenden Sie Authentifikator-Anwendungen auf Ihrem Telefon, um Verifizierungscodes als Zwei-Faktor-Authentifizierung zu erhalten.
+authenticatorMobileFinishSetUpMessage=Die Authentifikator-Anwendung wurde an Ihr Telefon gebunden.
+authenticatorActionSetup=Einrichten
+authenticatorSMSTitle=SMS-Code
+authenticatorSMSMessage=Keycloak sendet den Verifizierungscode an Ihr Telefon als Zwei-Faktor-Authentifizierung.
+authenticatorSMSFinishSetUpMessage=Textnachrichten werden gesendet an
+authenticatorDefaultStatus=Standard
+authenticatorChangePhone=Telefonnummer ändern
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Handy-Authentifikator-Setup
+smscodeIntroMessage=Geben Sie Ihre Rufnummer ein und ein Verifizierungscode wird an Ihr Telefon gesendet.
+mobileSetupStep1=Installieren Sie eine Authentifikator-Anwendung auf Ihrem Telefon. Die hier aufgeführten Anwendungen werden unterstützt.
+mobileSetupStep2=Öffnen Sie die Anwendung und scannen Sie den Barcode:
+mobileSetupStep3=Geben Sie den von der Anwendung bereitgestellten Einmalcode ein und klicken Sie auf Speichern, um die Einrichtung abzuschließen.
+scanBarCode=Wollen Sie den Barcode scannen?
+enterBarCode=Geben Sie den Einmalcode ein
+doCopy=Kopieren
+doFinish=Fertigstellen
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS-Code-Einrichtung
+chooseYourCountry=Wählen Sie Ihr Land
+enterYourPhoneNumber=Geben Sie Ihre Telefonnummer ein
+sendVerficationCode=Verifizierungscode senden
+enterYourVerficationCode=Geben Sie Ihren Verifizierungscode ein
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Backup-Codes einrichten
+realmName=Realm
+doDownload=Herunterladen
+doPrint=Drucken
+generateNewBackupCodes=Neue Backup-Codes generieren
+backtoAuthenticatorPage=Zurück zur Authentifikator-Seite
+
+
+#Resources
+resources=Ressourcen
+sharedwithMe=Mit mir geteilt
+share=Teilen
+sharedwith=Geteilt mit
+accessPermissions=Zugriffsberechtigungen
+permissionRequests=Berechtigungsanfragen
+approve=Genehmigen
+approveAll=Alle genehmigen
+people=Personen
+perPage=Pro Seite
+currentPage=Aktuelle Seite
+sharetheResource=Die Ressource teilen
+group=Gruppe
+selectPermission=Berechtigung auswählen
+addPeople=Personen hinzufügen, mit denen die Ressource geteilt werden soll
+addTeam=Team hinzufügen, mit dem die Ressource geteilt werden soll
+myPermissions=Meine Berechtigungen
+waitingforApproval=Warten auf Genehmigung
+anyPermission=Jede Berechtigung
+
+# Openshift messages
+openshift.scope.user_info=Nutzerinformation
+openshift.scope.user_check-access=Benutzerzugriffsinformationen
+openshift.scope.user_full=Voller Zugriff
+openshift.scope.list-projects=Projekte auflisten
+
+locale_fa=فارسی
diff --git a/themes/custom-theme-template/account/messages/messages_el.properties b/themes/custom-theme-template/account/messages/messages_el.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2d4d74c36e9cf10cc2e058811824dfbecafd7f47
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_el.properties
@@ -0,0 +1,376 @@
+role_manage-identity-providers=Διαχείριση παρόχων ταυτότητας
+doRemove=Αφαίρεση
+doAdd=Προσθήκη
+doSignOut=Έξοδος
+doLink=Σύνδεση
+personalInfoSidebarTitle=Προσωπικά στοιχεία
+accountSecuritySidebarTitle=Ασφάλεια λογαριασμού
+signingInSidebarTitle=Σε είσοδο
+deviceActivitySidebarTitle=Δραστηριότητα συσκευών
+role_manage-account-links=Διαχείριση συνδέσεων λογαριασμού
+linkedAccountsSidebarTitle=Συνδεδεμένοι λογαριασμοί
+editAccountHtmlTitle=Επεξεργασία Λογαριασμού
+personalInfoHtmlTitle=Προσωπικά Στοιχεία
+changePasswordHtmlTitle=Αλλαγή Κωδικού
+
+
+requiredFields=Απαιτούμενα πεδία
+sessionsHtmlTitle=Συνεδρίες
+accountManagementTitle=Διαχείριση Λογαριασμού Keycloak
+authenticatorTitle=Εφαρμογή Ταυτοποίησης
+applicationsHtmlTitle=Εφαρμογές
+linkedAccountsHtmlTitle=Συνδεδεμένοι λογαριασμοί
+accountManagementWelcomeMessage=Καλώς Ήλθατε στη Διαχείριση Λογαριασμού στο Keycloak
+personalInfoIntroMessage=Διαχειριστείτε τα βασικά στοιχεία
+accountSecurityIntroMessage=Ελέγξτε το κωδικό και τη πρόσβαση σας
+passwordLastUpdateMessage=Ο κωδικός πρόσβασης σας ενημερώθηκε στις
+updatePasswordMessageTitle=Βεβαιωθείτε ότι επιλέξατε ένα ισχυρό κωδικό
+updatePasswordMessage=Ένας ισχυρός κωδικός πρόσβασης είναι συνδυασμός ψηφίων, γραμμάτων και συμβόλων. Είναι δύσκολο να βρεθεί, δεν είναι υπαρκτή λέξη και το χρησιμοποιείται μόνο σε αυτό το λογαριασμό.
+email=Email
+firstName=Όνομα
+lastName=Επώνυμο
+familyName=Επώνυμο
+password=Κωδικός πρόσβασης
+passwordConfirm=Επιβεβαίωση
+currentPassword=Τρέχων Κωδικός Πρόσβασης
+passwordNew=Νέος Κωδικός Πρόσβασης
+username=Όνομα χρήστη
+address=Διεύθυνση
+street=Οδός
+locality=Πόλη ή Δήμος
+postal_code=Ταχυδρομικός Κώδικας
+country=Χώρα
+emailVerified=Επιβεβαιωμένο Email
+website=Ιστοσελίδα
+phoneNumber=Τηλέφωνο
+phoneNumberVerified=Επιβεβαιωμένο τηλέφωνο
+gender=Φύλο
+birthday=Ημερομηνία γέννησης
+zoneinfo=Ζώνη ώρας
+gssDelegationCredential=GSS διαπιστευτήρια εξουσιοδότησης
+profileScopeConsentText=Προφίλ χρήστη
+emailScopeConsentText=Διεύθυνση email
+addressScopeConsentText=Διεύθυνση
+phoneScopeConsentText=Τηλέφωνο
+samlRoleListScopeConsentText=Οι Ρόλοι Μου
+rolesScopeConsentText=Ρόλοι χρήστη
+role_admin=Διαχειριστής
+role_view-identity-providers=Εμφάνιση παρόχων ταυτότητας
+role_manage-realm=Διαχείριση τομέα
+role_manage-users=Διαχείριση χρηστών
+role_manage-applications=Διαχείριση εφαρμογών
+role_realm-admin=Διαχειριστή Τόπου
+role_create-realm=Δημιουργία τομέα
+role_view-realm=Εμφάνιση τομέα
+role_view-users=Εμφάνιση χρηστών
+role_view-applications=Εμφάνιση εφαρμογών
+role_view-clients=Εμφάνιση πελατών
+role_view-events=Εμφάνιση συμβάντων
+role_manage-clients=Διαχείριση πελατών
+role_manage-events=Διαχείριση συμβάντων
+role_view-profile=Εμφάνιση προφίλ
+role_manage-account=Διαχείριση λογαριασμού
+role_read-token=Ανάγνωση διακριτικού
+role_offline-access=Πρόσβαση εκτός-σύνδεσης
+client_account=Λογαριασμός
+client_account-console=Κονσόλα Λογαριασμού
+client_admin-cli=CLI Διαχείρισης
+client_realm-management=Διαχείριση Τομέα
+client_broker=Μεσολαβητής
+inResource=σε
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+invalidEmailMessage=Μη έγκυρη διεύθυνση email.
+accountDisabledMessage=Ο λογαριασμός έχει απενεργοποιηθεί, επικοινωνήστε με το διαχειριστή.
+consentDenied=Άρνηση Συναίνεσης.
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_es=Español
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+doSave=Αποθήκευση
+doCancel=Ακύρωση
+doLogIn=Είσοδος
+updatePasswordTitle=Ενημέρωση Κωδικού Πρόσβασης
+locale_ar=عربي
+authenticatorCode=Κωδικός μίας-χρήσης
+locale_en=English
+givenName=Όνομα
+region=Νομός ή Περιφέρεια
+fullName=Ονοματεπώνυμο
+offlineAccessScopeConsentText=Πρόσβαση εκτός-σύνδεσης
+accountSecurityTitle=Ασφάλεια Λογαριασμού
+invalidPasswordGenericMessage=Μη έγκυρος κωδικός πρόσβασης: ο νέος κωδικός δε συμφωνεί με τις πολιτικές κωδικών.
+invalidPasswordHistoryMessage=Μη έγκυρος κωδικός πρόσβασης: δε πρέπει να είναι το ίδιο με τους τελευταίους {0} κωδικούς.
+invalidPasswordRegexPatternMessage=Μη έγκυρος κωδικός πρόσβασης: δε ταιριάζει με τα μοτίβα regex.
+invalidPasswordNotEmailMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το email.
+invalidPasswordNotUsernameMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το όνομα χρήστη.
+invalidPasswordMinSpecialCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} ειδικούς χαρακτήρες.
+invalidPasswordMinUpperCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} κεφαλαίους χαρακτήρες.
+invalidPasswordMinLowerCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} πεζούς χαρακτήρες.
+invalidPasswordMinDigitsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} ψηφία.
+invalidPasswordMaxLengthMessage=Μη έγκυρος κωδικός πρόσβασης: μέγιστο μήκος {0}.
+invalidPasswordMinLengthMessage=Μη έγκυρος κωδικός πρόσβασης: ελάχιστο μήκος {0}.
+accountPasswordUpdatedMessage=Ο κωδικός πρόσβασης ενημερώθηκε.
+accountUpdatedMessage=Ο λογαριασμός σας έχει ενημερωθεί.
+emailExistsMessage=Το email υπάρχει ήδη.
+usernameExistsMessage=Το όνομα χρήστη υπάρχει ήδη.
+invalidTotpMessage=Μη έγκυρος κωδικός μίας χρήσης.
+invalidPasswordConfirmMessage=Η επιβεβαίωση του κωδικού πρόσβασης δε ταιριάζει.
+invalidPasswordBlacklistedMessage=Μη έγκυρος κωδικός πρόσβασης: ο κωδικός είναι απαγορευμένος.
+invalidPasswordExistingMessage=Μη έγκυρος υπάρχοντας κωδικός πρόσβασης.
+error-invalid-date=Μη έγκυρη ημερομηνία.
+error-invalid-uri-fragment=Μη έγκυρο κομμάτι URL.
+error-invalid-uri-scheme=Μη έγκυρο σχήμα URL.
+error-invalid-uri=Μη έγκυρο URL.
+error-pattern-no-match=Μη έγκυρη τιμή.
+error-invalid-number=Μη έγκυρος αριθμός.
+error-invalid-email=Μη έγκυρη διεύθυνση email.
+error-empty=Παρακαλώ ορίστε τιμή.
+error-invalid-blank=Παρακαλώ ορίστε τιμή.
+error-invalid-value=Μη έγκυρη τιμή.
+notMatchPasswordMessage=Οι κωδικοί πρόσβασης δε ταιριάζουν.
+missingTotpDeviceNameMessage=Παρακαλώ ορίστε όνομα συσκευής.
+missingTotpMessage=Παρακαλώ εισάγετε ένα κωδικό από εφαρμογή ταυτοποίησης.
+missingPasswordMessage=Παρακαλώ ορίστε κωδικό πρόσβασης.
+missingUsernameMessage=Παρακαλώ ορίστε όνομα χρήστη.
+missingEmailMessage=Παρακαλώ ορίστε email.
+missingLastNameMessage=Παρακαλώ ορίστε επώνυμο.
+missingFirstNameMessage=Παρακαλώ ορίστε ένα όνομα.
+readOnlyUsernameMessage=Δε μπορείτε να ενημερώσετε το όνομα χρήστη σας καθώς είναι μόνο-για-ανάγνωση.
+access-denied-when-idp-auth=Δεν επιτρέπεται η πρόσβαση κατά τη ταυτοποίηση με {0}
+accountUnusable=Κάθε μεταγενέστερη χρήση αυτής της εφαρμογής δεν θα είναι δυνατή με αυτό το λογαριασμό
+loggingOutImmediately=Άμεση αποσύνδεση σας
+errasingData=Διαγραφή όλων των δεδομένων σας
+deletingImplies=Η διαγραφή του λογαριασμού σας συνεπάγεται:
+irreversibleAction=Αυτή η ενέργεια είναι μη αναστρέψιμη
+openshift.scope.list-projects=Εμφάνιση λίστας έργων
+openshift.scope.user_full=Πλήρης Πρόσβαση
+openshift.scope.user_check-access=Πληροφορίες πρόσβασης χρήστη
+
+# Openshift messages
+openshift.scope.user_info=Πληροφορίες χρήστη
+clientNotFoundMessage=Ο πελάτης δε βρέθηκε.
+identityProviderAlreadyLinkedMessage=Η ομόσπονδη ταυτότητα που επιστρέφει το {0} είναι ήδη συνδεδεμένη με ένα άλλο χρήστη.
+role_view-groups=Εμφάνιση ομάδων
+role_uma_authorization=Απόκτηση δικαιωμάτων
+client_security-admin-console=κονσόλα διαχειριστή ασφαλείας
+allFieldsRequired=Απαιτούνται όλα τα πεδία
+backTo=Πίσω στο{0}
+date=Ημερομηνία
+event=Γεγονός
+ip=IP
+client=Πελάτης
+clients=Πελάτες
+details=Λεπτομέρειες
+started=Ξεκίνησε
+expires=Λήγει
+applications=Εφαρμογές
+account=Λογαριασμός
+federatedIdentity=Ομόσπονδη Ταυτότητα
+device-activity=Δραστηριότητα συσκευών
+sessions=Συνεδρίες
+log=Λογότυπο
+application=Εφαρμογή
+availableRoles=Διαθέσιμοι Ρόλοι
+grantedPersonalInfo=Εκχωρημένες Προσωπικές Πληροφορίες
+additionalGrants=Επιπλέον Χορηγήσεις
+action=Δράση
+doLogOutAllSessions=Έξοδος από όλες τις συνεδρίες
+accountLogHtmlTitle=Αρχείο Λογαριασμού
+noAccessMessage=Δεν επιτρέπεται η πρόσβαση
+deviceActivityHtmlTitle=Δραστηριότητα Συσκευών
+federatedIdentitiesHtmlTitle=Ομόσπονδες Ταυτότητες
+applicationsIntroMessage=Διαχειριστείτε το δικαίωμα της εφαρμογής σας να έχει πρόσβαση στο λογαριασμό σας
+resourceIntroMessage=Μοιράστε τους πόρους σας μεταξύ των μελών της ομάδας
+personalSubTitle=Τα Προσωπικά σας Στοιχεία
+personalSubMessage=Διαχειριστείτε τα βασικά στοιχεία σας.
+role_view-consent=Εμφάνιση εγκρίσεων
+role_manage-consent=Διαχείριση εγκρίσεων
+backToApplication=&laquo; Πίσω στην εφαρμογή
+lastAccess=Τελευταία Πρόσβαση
+authenticator=Ταυτοποιητής
+grantedPermissions=Εκχωρημένα Δικαιώματα
+fullAccess=Πλήρης Πρόσβαση
+configureAuthenticators=Ρυθμισμένες Εφαρμογές Ταυτοποίησης
+mobile=Κινητό
+totpStep2=Ανοίξτε την εφαρμογή και σαρώστε την εικόνα του κωδικού:
+totpStep3DeviceName=Ορίστε ένα Όνομα Συσκευής για να σας βοηθήσει στη διαχείριση των συσκευών OTP.
+totpManualStep2=Ξεκινήστε την εφαρμογή και εισάγετε το κλειδί:
+totpUnableToScan=Αδυναμία σάρωσης;
+totpScanBarcode=Σάρωση της εικόνας του κωδικού;
+totpStep1=Εγκαταστήστε μία από τις παρακάτω εφαρμογές στο κινητό σας:
+totpStep3=Δώστε το κωδικό μίας χρήσης όπως εμφανίζεται στην εφαρμογή σας και επιλέξτε το Αποθήκευση για να ολοκληρωθεί η αρχική ρύθμιση.
+totp.totp=Χρονικός
+totp.hotp=Σειριακός
+totpType=Τύπος
+totpAlgorithm=Αλγόριθμος
+totpDigits=Ψηφία
+totpInterval=Διάστημα
+totpCounter=Μετρητής
+totpDeviceName=Όνομα Συσκευής
+offlineToken=Διακριτικό Εκτός Σύνδεσης
+revoke=Ανάκληση Χορήγησης
+totpManualStep3=Χρησιμοποιείστε τις παρακάτω τιμές ρυθμίσεων αν η εφαρμογή το υποστηρίζει:
+invalidUserMessage=Μη έγκυρος χρήστης
+updateReadOnlyAttributesRejectedMessage=Απορρίφθηκε η ενημέρωση του μόνο-ανάγνωσης χαρακτηριστικού
+readOnlyUserMessage=Δε μπορείτε να ενημερώσετε το λογαριασμό σας καθώς είναι μόνο-για-ανάγνωση.
+successTotpMessage=Ενεργοποιήθηκε η εφαρμογή ταυτοποίησης στο κινητό.
+successGrantRevokedMessage=Η χορήγηση ανακλήθηκε επιτυχώς.
+invalidFederatedIdentityActionMessage=Μη έγκυρη ή απούσα δράση.
+identityProviderNotFoundMessage=Δε βρέθηκε ο ορισμένος πάροχος ταυτότητας.
+federatedIdentityLinkNotActiveMessage=Αυτή η ταυτότητα δεν είναι πια ενεργή.
+identityProviderRedirectErrorMessage=Αποτυχία στην ανακατεύθυνση προς το πάροχο ταυτότητας.
+identityProviderRemovedMessage=Ο πάροχος ταυτότητας αφαιρέθηκε επιτυχώς.
+
+# Authorization
+myResources=Οι Πόροι Μου
+myResourcesSub=Οι πόροι μου
+doDeny=Άρνηση
+doRevoke=Ανάκληση
+doApprove=Έγκριση
+doRemoveSharing=Αφαίρεση Διαμοιρασμού
+doRemoveRequest=Αφαίρεση Αίτησης
+peopleAccessResource=Άτομα με πρόσβαση σε αυτό το πόρο
+resourceNoPermissionsGrantingAccess=Καμιά άδεια που χορηγεί πρόσβαση σε αυτό το πόρο
+anyAction=Κάθε δράση
+name=Όνομα
+scopes=Εμβέλειες
+resource=Πόρος
+user=Χρήστης
+shareWithOthers=Διαμοιρασμός με άλλους
+needMyApproval=Χρειάζεται την έγκριση μου
+requestsWaitingApproval=Οι αιτήσεις που αναμένουν έγκριση
+icon=Εικονίδιο
+requestor=Αιτών
+owner=Ιδιοκτήτης
+permissionRequestion=Αίτηση Άδειας
+permission=Άδεια
+shares=διαμοιρασμός(οί)
+notBeingShared=Αυτός ο πόρος δε διαμοιράζεται.
+notHaveAnyResource=Δεν έχετε κανένα πόρο
+havePermissionRequestsWaitingForApproval=Έχετε {0} αιτήση(εις) για άδεια σε αναμονή προς έγκριση.
+clickHereForDetails=Πατήστε εδώ για λεπτομέρειες.
+
+# Applications
+applicationName=Όνομα
+applicationInUse=Μόνο εφαρμογή σε-χρήση
+clearAllFilter=Καθαρισμός φίλτρων
+activeFilters=Ενεργά φίλτρα
+filterByName=Φιλτράρισμα Ανά Όνομα ...
+internalApps=Εσωτερικές εφαρμογές
+thirdpartyApps=Εφαρμογές Τρίτων
+appResults=Αποτελέσματα
+authenticatorSubTitle=Ορισμός Ταυτοποίησης Δύο-Παραγόντων
+authenticatorMobileTitle=Εφαρμογή Ταυτοποίησης στο Κινητό
+authenticatorMobileMessage=Χρησιμοποιείστε μία Εφαρμογή Ταυτοποίησης στο κινητό για να έχετε τους κωδικούς Επιβεβαίωσης σαν ταυτοποίηση δύο-παραγόντων.
+authenticatorMobileFinishSetUpMessage=Η εφαρμογή ταυτοποίησης έχει δεθεί με το κινητό σας.
+authenticatorActionSetup=Ρύθμιση
+authenticatorSMSTitle=Κωδικός SMS
+authenticatorSMSFinishSetUpMessage=Μηνύματα κειμένου στέλνονται στο
+authenticatorDefaultStatus=Προεπιλογή
+
+# Linked account
+authorizedProvider=Πιστοποιημένος Πάροχος
+identityProvider=Πάροχος Ταυτότητας
+identityProviderMessage=Για να συνδέσετε το λογαριασμό σας με παρόχους ταυτότητας που έχετε ρυθμίσει
+socialLogin=Κοινωνική Είσοδος
+userDefined=Ορισμένη από το Χρήστη
+removeAccess=Αφαίρεση Πρόσβασης
+
+#Authenticator
+authenticatorStatusMessage=Η ταυτοποίηση δύο-παραγόντων αυτή τη στιγμή είναι
+authenticatorFinishSetUpTitle=Η Ταυτοποίηση Δύο Παραγόντων Σας
+smscodeIntroMessage=Ορίστε ένα αριθμό τηλεφώνου και ένας κωδικός επιβεβαίωσης θα σταλεί στο κινητό σας.
+mobileSetupStep2=Ανοίξτε την εφαρμογή και σαρώστε το κωδικό QR:
+scanBarCode=Θέλετε να σαρώσετε το κωδικό QR;
+enterBarCode=Εισάγετε το κωδικό μίας-φοράς
+doCopy=Αντιγραφή
+doFinish=Ολοκλήρωση
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Ρύθμιση Κωδικού SMS
+chooseYourCountry=Επιλέξτε τη χώρα σας
+enterYourPhoneNumber=Εισάγετε το τηλεφωνικό αριθμό σας
+sendVerficationCode=Αποστολή Κωδικού Επιβεβαίωσης
+enterYourVerficationCode=Εισάγετε το κωδικό επιβεβαίωσης
+realmName=Τομέας
+doDownload=Λήψη
+doPrint=Εκτύπωση
+generateNewBackupCodes=Παραγωγή Νέων Κωδικών Ανάκτησης Ταυτοποίησης
+backtoAuthenticatorPage=Πίσω στη Σελίδα Εφαρμογής Ταυτοποίησης
+
+
+#Resources
+resources=Πόροι
+share=Διαμοιρασμός
+sharedwith=Μοιράζεται με
+permissionRequests=Αιτήσεις Αδειών
+approve=Έγκριση
+approveAll=Έγκριση όλων
+people=άτομα
+perPage=ανά σελίδα
+currentPage=Τρέχουσα Σελίδα
+sharetheResource=Διαμοιρασμός πόρου
+group=Ομάδα
+addPeople=Προσθήκη ατόμων στα οποία θα διαμοιράσετε το πόρο σας
+myPermissions=Οι Άδειες Μου
+waitingforApproval=Αναμονή για έγκριση
+anyPermission=Κάθε Άδεια
+error-invalid-length-too-short=Το χαρακτηριστικό {0} πρέπει να έχει ελάχιστο μήκος {1}.
+error-number-out-of-range-too-small=Το χαρακτηριστικό {0} πρέπει να έχει ελάχιστη τιμή {1}.
+error-user-attribute-required=Παρακαλώ ορίστε το χαρακτηριστικό {0}.
+error-user-attribute-read-only=Το πεδίο {0} είναι μόνο για ανάγνωση.
+error-person-name-invalid-character=Το όνομα περιέχει ένα μη έγκυρο χαρακτήρα.
+readOnlyPasswordMessage=Δε μπορείτε να ενημερώσετε το κωδικό πρόσβασης σας καθώς είναι μόνο-για-ανάγνωση.
+successTotpRemovedMessage=Αφαιρέθηκε η εφαρμογή ταυτοποίησης στο κινητό.
+authenticatorFinishSetUpMessage=Κάθε φορά που συνδέστε στο λογαριασμό σας στο Keycloak, θα πρέπει να παρέχετε ένα κωδικό ταυτοποίησης δύο-παραγόντων.
+authenticatorSubMessage=Για να βελτιώσετε τη ασφάλεια του λογαριασμού σας, ενεργοποιήστε τουλάχιστον μια από τις διαθέσιμες μεθόδους ταυτοποίησης δύο-παραγόντων.
+authenticatorSMSMessage=Το Keycloak θα στείλει ένα κωδικό Επιβεβαίωσης στο κινητό σαν ταυτοποίηση δύο-παραγόντων.
+authenticatorChangePhone=Αλλαγή Τηλεφωνικού Αριθμού
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Ρύθμιση Εφαρμογής Ταυτοποίησης
+mobileSetupStep1=Εγκαταστήστε μία εφαρμογή ταυτοποίησης στο κινητό σας. Υποστηρίζονται οι παρακάτω εφαρμογές.
+mobileSetupStep3=Εισάγετε το κωδικό μίας-φοράς που παρήχθει από την εφαρμογή και πατήστε Αποθήκευση για ολοκλήρωση.
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Ρύθμιση Κωδικών Ανάκτησης Ταυτοποίησης
+sharedwithMe=Μοιράζονται με Εμένα
+accessPermissions=Άδειες Πρόσβασης
+selectPermission=Επιλογή Άδειας
+addTeam=Προσθήκη ομάδας στην οποία θα διαμοιράσετε το πόρο σας
+error-invalid-length=Το χαρακτηριστικό {0} πρέπει να έχει μήκος μεταξύ {1} και {2}.
+error-number-out-of-range=Το χαρακτηριστικό {0} πρέπει να είναι ένας αριθμός μεταξύ {1} και {2}.
+error-number-out-of-range-too-big=Το χαρακτηριστικό {0} πρέπει να έχει μέγιστη τιμή {2}.
+error-username-invalid-character=Το όνομα χρήστη περιέχει ένα μη έγκυρο χαρακτήρα.
+missingIdentityProviderMessage=Δεν ορίστηκε πάροχος ταυτότητας.
+federatedIdentityRemovingLastProviderMessage=Δε μπορείτε να αφαιρέσετε τη τελευταία ομόσπονδη ταυτότητα καθώς δεν έχετε κωδικό πρόσβασης.
+staleCodeAccountMessage=Η σελίδα έληξε. Παρακαλώ δοκιμάστε άλλη μια φορά.
+accountTemporarilyDisabledMessage=Ο λογαριασμός έχει απενεργοποιηθεί προσωρινά, επικοινωνήστε με το διαχειριστή ή δοκιμάστε αργότερα.
+resourceManagedPolicies=Άδειες που χορηγούν πρόσβαση σε αυτό το πόρο
+description=Περιγραφή
+peopleSharingThisResource=Άτομα που διαμοιράζουν αυτό το πόρο
+resourcesSharedWithMe=Πόροι μου διαμοιράζονται με εμένα
+noResourcesSharedWithYou=Δε διαμοιράζεται πόρος με εσάς
+resourceIsNotBeingShared=Αυτός ο πόρος δεν διαμοιράζεται
+applicationType=Τύπος Εφαρμογής
+allApps=Όλες οι εφαρμογές
+authorizedProviderMessage=Πιστοποιημένοι Πάροχοι που είναι συνδεδεμένοι με το λογαριασμό σας
+removeAccessMessage=Πρέπει να χορηγήσετε ξανά πρόσβαση, αν θέλετε να χρησιμοποιήσετε αυτό το λογαριασμό εφαρμογής.
+error-invalid-length-too-long=Το χαρακτηριστικό {0} πρέπει να έχει μέγιστο μήκος {2}.
diff --git a/themes/custom-theme-template/account/messages/messages_en.properties b/themes/custom-theme-template/account/messages/messages_en.properties
new file mode 100755
index 0000000000000000000000000000000000000000..88af61148052c6ff8f2ec8f28867e70a1a419b1d
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_en.properties
@@ -0,0 +1,410 @@
+doSave=Save
+doCancel=Cancel
+doLogOutAllSessions=Log out all sessions
+doRemove=Remove
+doAdd=Add
+doSignOut=Sign out
+doLogIn=Log In
+doLink=Link
+noAccessMessage=Access not allowed
+
+personalInfoSidebarTitle=Personal info
+accountSecuritySidebarTitle=Account security
+signingInSidebarTitle=Signing in
+deviceActivitySidebarTitle=Device activity
+linkedAccountsSidebarTitle=Linked accounts
+
+editAccountHtmlTitle=Edit Account
+personalInfoHtmlTitle=Personal Info
+federatedIdentitiesHtmlTitle=Federated Identities
+accountLogHtmlTitle=Account Log
+changePasswordHtmlTitle=Change Password
+deviceActivityHtmlTitle=Device Activity
+sessionsHtmlTitle=Sessions
+accountManagementTitle=Keycloak Account Management
+authenticatorTitle=Authenticator
+applicationsHtmlTitle=Applications
+linkedAccountsHtmlTitle=Linked accounts
+
+accountManagementWelcomeMessage=Welcome to Keycloak Account Management
+accountManagementBaseThemeCannotBeUsedDirectly=The base account theme only contains translations for account console. \
+    To display account console, you either need to set the parent of your theme to another account theme, or supply your own index.ftl file. \
+    Please see the documentation for further information.
+personalInfoIntroMessage=Manage your basic information
+accountSecurityTitle=Account Security
+accountSecurityIntroMessage=Control your password and account access
+applicationsIntroMessage=Track and manage your app permission to access your account
+resourceIntroMessage=Share your resources among team members
+passwordLastUpdateMessage=Your password was updated at
+updatePasswordTitle=Update Password
+updatePasswordMessageTitle=Make sure you choose a strong password
+updatePasswordMessage=A strong password contains a mix of numbers, letters, and symbols. It is hard to guess, does not resemble a real word, and is only used for this account.
+personalSubTitle=Your Personal Info
+personalSubMessage=Manage your basic information.
+
+authenticatorCode=One-time code
+email=Email
+firstName=First name
+givenName=Given name
+fullName=Full name
+lastName=Last name
+familyName=Family name
+password=Password
+currentPassword=Current Password
+passwordConfirm=Confirmation
+passwordNew=New Password
+username=Username
+address=Address
+street=Street
+locality=City or Locality
+region=State, Province, or Region
+postal_code=Zip or Postal code
+country=Country
+emailVerified=Email verified
+website=Web page
+phoneNumber=Phone number
+phoneNumberVerified=Phone number verified
+gender=Gender
+birthday=Birthdate
+zoneinfo=Time zone
+gssDelegationCredential=GSS Delegation Credential
+
+profileScopeConsentText=User profile
+emailScopeConsentText=Email address
+addressScopeConsentText=Address
+phoneScopeConsentText=Phone number
+offlineAccessScopeConsentText=Offline Access
+samlRoleListScopeConsentText=My Roles
+rolesScopeConsentText=User roles
+
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Create realm
+role_view-realm=View realm
+role_view-users=View users
+role_view-applications=View applications
+role_view-groups=View groups
+role_view-clients=View clients
+role_view-events=View events
+role_view-identity-providers=View identity providers
+role_view-consent=View consents
+role_manage-realm=Manage realm
+role_manage-users=Manage users
+role_manage-applications=Manage applications
+role_manage-identity-providers=Manage identity providers
+role_manage-clients=Manage clients
+role_manage-events=Manage events
+role_view-profile=View profile
+role_manage-account=Manage account
+role_manage-account-links=Manage account links
+role_manage-consent=Manage consents
+role_read-token=Read token
+role_offline-access=Offline access
+role_uma_authorization=Obtain permissions
+client_account=Account
+client_account-console=Account Console
+client_security-admin-console=security admin console
+client_admin-cli=Admin CLI
+client_realm-management=Realm Management
+client_broker=Broker
+
+
+requiredFields=Required fields
+allFieldsRequired=All fields required
+
+backToApplication=&laquo; Back to application
+backTo=Back to {0}
+
+date=Date
+event=Event
+ip=IP
+client=Client
+clients=Clients
+details=Details
+started=Started
+lastAccess=Last Access
+expires=Expires
+applications=Applications
+
+account=Account
+federatedIdentity=Federated Identity
+authenticator=Authenticator
+device-activity=Device activity
+sessions=Sessions
+log=Log
+
+application=Application
+availableRoles=Available Roles
+grantedPermissions=Granted Permissions
+grantedPersonalInfo=Granted Personal Info
+additionalGrants=Additional Grants
+action=Action
+inResource=in
+fullAccess=Full Access
+offlineToken=Offline Token
+revoke=Revoke Grant
+
+configureAuthenticators=Configured Authenticators
+mobile=Mobile
+totpStep1=Install one of the following applications on your mobile:
+totpStep2=Open the application and scan the barcode:
+totpStep3=Enter the one-time code provided by the application and click Save to finish the setup.
+totpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
+
+totpManualStep2=Open the application and enter the key:
+totpManualStep3=Use the following configuration values if the application allows setting them:
+totpUnableToScan=Unable to scan?
+totpScanBarcode=Scan barcode?
+
+totp.totp=Time-based
+totp.hotp=Counter-based
+
+totpType=Type
+totpAlgorithm=Algorithm
+totpDigits=Digits
+totpInterval=Interval
+totpCounter=Counter
+totpDeviceName=Device Name
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=This action is irreversible
+deletingImplies=Deleting your account implies:
+errasingData=Erasing all your data
+loggingOutImmediately=Logging you out immediately
+accountUnusable=Any subsequent use of the application will not be possible with this account
+
+missingUsernameMessage=Please specify username.
+missingFirstNameMessage=Please specify first name.
+invalidEmailMessage=Invalid email address.
+missingLastNameMessage=Please specify last name.
+missingEmailMessage=Please specify email.
+missingPasswordMessage=Please specify password.
+notMatchPasswordMessage=Passwords don''t match.
+invalidUserMessage=Invalid user
+updateReadOnlyAttributesRejectedMessage=Update of read-only attribute rejected
+
+missingTotpMessage=Please specify authenticator code.
+missingTotpDeviceNameMessage=Please specify device name.
+invalidPasswordExistingMessage=Invalid existing password.
+invalidPasswordConfirmMessage=Password confirmation doesn''t match.
+invalidTotpMessage=Invalid authenticator code.
+
+usernameExistsMessage=Username already exists.
+emailExistsMessage=Email already exists.
+
+readOnlyUserMessage=You can''t update your account as it is read-only.
+readOnlyUsernameMessage=You can''t update your username as it is read-only.
+readOnlyPasswordMessage=You can''t update your password as your account is read-only.
+
+successTotpMessage=Mobile authenticator configured.
+successTotpRemovedMessage=Mobile authenticator removed.
+
+successGrantRevokedMessage=Grant revoked successfully.
+
+accountUpdatedMessage=Your account has been updated.
+accountPasswordUpdatedMessage=Your password has been updated.
+
+missingIdentityProviderMessage=Identity provider not specified.
+invalidFederatedIdentityActionMessage=Invalid or missing action.
+identityProviderNotFoundMessage=Specified identity provider not found.
+federatedIdentityLinkNotActiveMessage=This identity is not active anymore.
+federatedIdentityRemovingLastProviderMessage=You can''t remove last federated identity as you don''t have a password.
+identityProviderRedirectErrorMessage=Failed to redirect to identity provider.
+identityProviderRemovedMessage=Identity provider removed successfully.
+identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
+staleCodeAccountMessage=The page expired. Please try one more time.
+consentDenied=Consent denied.
+access-denied-when-idp-auth=Access denied when authenticating with {0}
+
+accountDisabledMessage=Account is disabled, contact your administrator.
+
+accountTemporarilyDisabledMessage=Account is temporarily disabled, contact your administrator or try again later.
+invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
+invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
+invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
+invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
+invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
+invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
+invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
+invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
+invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
+invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
+invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
+
+# Authorization
+myResources=My Resources
+myResourcesSub=My resources
+doDeny=Deny
+doRevoke=Revoke
+doApprove=Approve
+doRemoveSharing=Remove Sharing
+doRemoveRequest=Remove Request
+peopleAccessResource=People with access to this resource
+resourceManagedPolicies=Permissions granting access to this resource
+resourceNoPermissionsGrantingAccess=No permissions granting access to this resource
+anyAction=Any action
+description=Description
+name=Name
+scopes=Scopes
+resource=Resource
+user=User
+peopleSharingThisResource=People sharing this resource
+shareWithOthers=Share with others
+needMyApproval=Need my approval
+requestsWaitingApproval=Your requests waiting approval
+icon=Icon
+requestor=Requestor
+owner=Owner
+resourcesSharedWithMe=Resources shared with me
+permissionRequestion=Permission Requestion
+permission=Permission
+shares=share(s)
+notBeingShared=This resource is not being shared.
+notHaveAnyResource=You don't have any resources
+noResourcesSharedWithYou=There are no resources shared with you
+havePermissionRequestsWaitingForApproval=You have {0} permission request(s) waiting for approval.
+clickHereForDetails=Click here for details.
+resourceIsNotBeingShared=The resource is not being shared
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fr=Français
+locale_hu=Magyar
+locale_fa=فارسی
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_th=ไทย
+locale_tr=Türkçe
+locale_uk=Українська
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+# Applications
+applicationName=Name
+applicationType=Application Type
+applicationInUse=In-use app only
+clearAllFilter=Clear all filters
+activeFilters=Active filters
+filterByName=Filter By Name ...
+allApps=All applications
+internalApps=Internal applications
+thirdpartyApps=Third-Party applications
+appResults=Results
+clientNotFoundMessage=Client not found.
+
+# Linked account
+authorizedProvider=Authorized Provider
+authorizedProviderMessage=Authorized Providers linked with your account
+identityProvider=Identity Provider
+identityProviderMessage=To link your account with identity providers you have configured
+socialLogin=Social Login
+userDefined=User Defined
+removeAccess=Remove Access
+removeAccessMessage=You will need to grant access again, if you want to use this app account.
+
+#Authenticator
+authenticatorStatusMessage=Two-factor authentication is currently
+authenticatorFinishSetUpTitle=Your Two-Factor Authentication
+authenticatorFinishSetUpMessage=Each time you sign in to your Keycloak account, you will be asked to provide a two-factor authentication code.
+authenticatorSubTitle=Set Up Two-Factor Authentication
+authenticatorSubMessage=To enhance the security of your account, enable at least one of the available two-factor authentication methods.
+authenticatorMobileTitle=Mobile Authenticator
+authenticatorMobileMessage=Use mobile Authenticator to get Verification codes as the two-factor authentication.
+authenticatorMobileFinishSetUpMessage=The authenticator has been bound to your phone.
+authenticatorActionSetup=Set up
+authenticatorSMSTitle=SMS Code
+authenticatorSMSMessage=Keycloak will send the Verification code to your phone as the two-factor authentication.
+authenticatorSMSFinishSetUpMessage=Text messages are sent to
+authenticatorDefaultStatus=Default
+authenticatorChangePhone=Change Phone Number
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobile Authenticator Setup
+smscodeIntroMessage=Enter your phone number and a verification code will be sent to your phone.
+mobileSetupStep1=Install an authenticator application on your phone. The applications listed here are supported.
+mobileSetupStep2=Open the application and scan the barcode:
+mobileSetupStep3=Enter the one-time code provided by the application and click Save to finish the setup.
+scanBarCode=Want to scan the barcode?
+enterBarCode=Enter the one-time code
+doCopy=Copy
+doFinish=Finish
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS Code Setup
+chooseYourCountry=Choose your country
+enterYourPhoneNumber=Enter your phone number
+sendVerficationCode=Send Verification Code
+enterYourVerficationCode=Enter your verification code
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Recovery Authentication Codes Setup
+realmName=Realm
+doDownload=Download
+doPrint=Print
+generateNewBackupCodes=Generate New Recovery Authentication Codes
+backtoAuthenticatorPage=Back to Authenticator Page
+
+
+#Resources
+resources=Resources
+sharedwithMe=Shared with Me
+share=Share
+sharedwith=Shared with
+accessPermissions=Access Permissions
+permissionRequests=Permission Requests
+approve=Approve
+approveAll=Approve all
+people=people
+perPage=per page
+currentPage=Current Page
+sharetheResource=Share the resource
+group=Group
+selectPermission=Select Permission
+addPeople=Add people to share your resource with
+addTeam=Add team to share your resource with
+myPermissions=My Permissions
+waitingforApproval=Waiting for approval
+anyPermission=Any Permission
+
+# Openshift messages
+openshift.scope.user_info=User information
+openshift.scope.user_check-access=User access information
+openshift.scope.user_full=Full Access
+openshift.scope.list-projects=List projects
+
+error-invalid-value=Invalid value.
+error-invalid-blank=Please specify value.
+error-empty=Please specify value.
+error-invalid-length=Attribute {0} must have a length between {1} and {2}.
+error-invalid-length-too-short=Attribute {0} must have minimal length of {1}.
+error-invalid-length-too-long=Attribute {0} must have maximal length of {2}.
+error-invalid-email=Invalid email address.
+error-invalid-number=Invalid number.
+error-number-out-of-range=Attribute {0} must be a number between {1} and {2}.
+error-number-out-of-range-too-small=Attribute {0} must have minimal value of {1}.
+error-number-out-of-range-too-big=Attribute {0} must have maximal value of {2}.
+error-pattern-no-match=Invalid value.
+error-invalid-uri=Invalid URL.
+error-invalid-uri-scheme=Invalid URL scheme.
+error-invalid-uri-fragment=Invalid URL fragment.
+error-user-attribute-required=Please specify attribute {0}.
+error-invalid-date=Invalid date.
+error-user-attribute-read-only=The field {0} is read only.
+error-username-invalid-character=Username contains invalid character.
+error-person-name-invalid-character=Name contains invalid character.
diff --git a/themes/custom-theme-template/account/messages/messages_es.properties b/themes/custom-theme-template/account/messages/messages_es.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ec80911572b45b1eda77abd34ae6d6503fdec5c1
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_es.properties
@@ -0,0 +1,417 @@
+doSave=Guardar
+doCancel=Cancelar
+doLogOutAllSessions=Desconectar de todas las sesiones
+doRemove=Eliminar
+doAdd=Añadir
+doSignOut=Desconectar
+
+editAccountHtmlTitle=Editar cuenta
+federatedIdentitiesHtmlTitle=Identidades federadas
+accountLogHtmlTitle=Registro de la cuenta
+changePasswordHtmlTitle=Cambiar contraseña
+sessionsHtmlTitle=Sesiones
+accountManagementTitle=Gestión de Cuenta Keycloak
+authenticatorTitle=Autenticador
+applicationsHtmlTitle=Aplicaciones
+
+authenticatorCode=Código de un solo uso
+email=Email
+firstName=Nombre
+givenName=Nombre de pila
+fullName=Nombre completo
+lastName=Apellidos
+familyName=Apellido
+password=Contraseña
+passwordConfirm=Confirma la contraseña
+passwordNew=Nueva contraseña
+username=Usuario
+address=Dirección
+street=Calle
+locality=Ciudad o Municipio
+region=Estado, Provincia, o Región
+postal_code=Código Postal
+country=País
+emailVerified=Email verificado
+gssDelegationCredential=GSS Delegation Credential
+
+role_admin=Administrador
+role_realm-admin=Administrador del dominio
+role_create-realm=Crear dominio
+role_view-realm=Ver dominio
+role_view-users=Ver usuarios
+role_view-applications=Ver aplicaciones
+role_view-clients=Ver clientes
+role_view-events=Ver eventos
+role_view-identity-providers=Ver proveedores de identidad
+role_manage-realm=Gestionar dominio
+role_manage-users=Gestionar usuarios
+role_manage-applications=Gestionar aplicaciones
+role_manage-identity-providers=Gestionar proveedores de identidad
+role_manage-clients=Gestionar clientes
+role_manage-events=Gestionar eventos
+role_view-profile=Ver perfil
+role_manage-account=Gestionar cuenta
+role_read-token=Leer token
+role_offline-access=Acceso sin conexión
+client_account=Cuenta
+client_security-admin-console=Consola de Administración de Seguridad
+client_realm-management=Gestión de dominio
+client_broker=Broker
+
+
+requiredFields=Campos obligatorios
+allFieldsRequired=Todos los campos obligatorios
+
+backToApplication=&laquo; Volver a la aplicación
+backTo=Volver a {0}
+
+date=Fecha
+event=Evento
+ip=IP
+client=Cliente
+clients=Clientes
+details=Detalles
+started=Iniciado
+lastAccess=Último acceso
+expires=Expira
+applications=Aplicaciones
+
+account=Cuenta
+federatedIdentity=Identidad federada
+authenticator=Autenticador
+sessions=Sesiones
+log=Regisro
+
+application=Aplicación
+availablePermissions=Permisos disponibles
+grantedPermissions=Permisos concedidos
+grantedPersonalInfo=Información personal concedida
+additionalGrants=Permisos adicionales
+action=Acción
+inResource=en
+fullAccess=Acceso total
+offlineToken=Código de autorización offline
+revoke=Revocar permiso
+
+configureAuthenticators=Autenticadores configurados
+mobile=Móvil
+totpStep1=Instala <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> o Google Authenticator en tu teléfono móvil. Ambas aplicaciones están disponibles en <a href="https://play.google.com">Google Play</a> y en la App Store de Apple.
+totpStep2=Abre la aplicación y escanea el código o introduce la clave.
+totpStep3=Introduce el código único que te muestra la aplicación de autenticación y haz clic en Enviar para finalizar la configuración
+
+missingUsernameMessage=Por favor indica tu usuario.
+missingFirstNameMessage=Por favor indica el nombre.
+invalidEmailMessage=Email no válido
+missingLastNameMessage=Por favor indica tus apellidos.
+missingEmailMessage=Por favor indica el email.
+missingPasswordMessage=Por favor indica tu contraseña.
+notMatchPasswordMessage=Las contraseñas no coinciden.
+
+missingTotpMessage=Por favor indica tu código de autenticación
+invalidPasswordExistingMessage=La contraseña actual no es correcta.
+invalidPasswordConfirmMessage=La confirmación de contraseña no coincide.
+invalidTotpMessage=El código de autenticación no es válido.
+
+usernameExistsMessage=El usuario ya existe
+emailExistsMessage=El email ya existe
+
+readOnlyUserMessage=No puedes actualizar tu usuario porque tu cuenta es de solo lectura.
+readOnlyPasswordMessage=No puedes actualizar tu contraseña porque tu cuenta es de solo lectura.
+
+successTotpMessage=Aplicación de autenticación móvil configurada.
+successTotpRemovedMessage=Aplicación de autenticación móvil eliminada.
+
+successGrantRevokedMessage=Permiso revocado correctamente
+
+accountUpdatedMessage=Tu cuenta se ha actualizado.
+accountPasswordUpdatedMessage=Tu contraseña se ha actualizado.
+
+missingIdentityProviderMessage=Proveedor de identidad no indicado.
+invalidFederatedIdentityActionMessage=Acción no válida o no indicada.
+identityProviderNotFoundMessage=No se encontró un proveedor de identidad.
+federatedIdentityLinkNotActiveMessage=Esta identidad ya no está activa
+federatedIdentityRemovingLastProviderMessage=No puedes eliminar la última identidad federada porque no tienes fijada una contraseña.
+identityProviderRedirectErrorMessage=Error en la redirección al proveedor de identidad
+identityProviderRemovedMessage=Proveedor de identidad borrado correctamente.
+
+accountDisabledMessage=La cuenta está desactivada, contacta con el administrador.
+
+accountTemporarilyDisabledMessage=La cuenta está temporalmente desactivada, contacta con el administrador o inténtalo de nuevo más tarde.
+invalidPasswordMinLengthMessage=Contraseña incorrecta: longitud mínima {0}.
+invalidPasswordMinLowerCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras minúsculas.
+invalidPasswordMinDigitsMessage=Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.
+invalidPasswordMinUpperCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras mayúsculas.
+invalidPasswordMinSpecialCharsMessage=Contraseña incorrecta: debe contener al menos {0} caracteres especiales.
+invalidPasswordNotUsernameMessage=Contraseña incorrecta: no puede ser igual al nombre de usuario.
+invalidPasswordRegexPatternMessage=Contraseña incorrecta: no cumple la expresión regular.
+invalidPasswordHistoryMessage=Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fr=Français
+locale_hu=Magyar
+locale_fa=فارسی
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_th=ไทย
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+doLogIn=Iniciar sesión
+doLink=Enlace
+noAccessMessage=Acceso no permitido
+
+personalInfoSidebarTitle=Información personal
+accountSecuritySidebarTitle=Seguridad de la cuenta
+signingInSidebarTitle=Iniciando sesión
+deviceActivitySidebarTitle=Actividad del dispositivo
+linkedAccountsSidebarTitle=Cuentas vinculadas
+
+personalInfoHtmlTitle=Información personal
+deviceActivityHtmlTitle=Actividad del dispositivo
+linkedAccountsHtmlTitle=Cuentas vinculadas
+
+accountManagementWelcomeMessage=Bienvenido a la Administración de Cuenta KeyCloak
+personalInfoIntroMessage=Administre su información básica
+accountSecurityTitle=Seguridad de la cuenta
+accountSecurityIntroMessage=Controle su contraseña y acceso a la cuenta
+applicationsIntroMessage=Rastree y administre el permiso de su aplicación para acceder a su cuenta
+resourceIntroMessage=Comparta sus recursos entre los miembros del equipo
+passwordLastUpdateMessage=Su contraseña se actualizó en
+updatePasswordTitle=Actualiza contraseña
+updatePasswordMessageTitle=Asegúrese de elegir una contraseña segura
+updatePasswordMessage=Una contraseña segura contiene una combinación de números, letras y símbolos. Es difícil de adivinar, no se parece a una palabra real y solo se usa para esta cuenta.
+personalSubTitle=Tu información personal
+personalSubMessage=Administre su información básica.
+
+currentPassword=Contraseña actual
+website=Página web
+phoneNumber=Número de teléfono
+phoneNumberVerified=Número de teléfono verificado
+gender=Género
+birthday=Fecha de nacimiento
+zoneinfo=Zona horaria
+profileScopeConsentText=Perfil del usuario
+emailScopeConsentText=Dirección de correo electrónico
+addressScopeConsentText=Dirección
+phoneScopeConsentText=Número de teléfono
+offlineAccessScopeConsentText=Acceso fuera de línea
+samlRoleListScopeConsentText=Mis roles
+rolesScopeConsentText=Roles del usuario
+
+role_view-groups=Ver grupos
+role_view-consent=Ver consentimientos
+role_manage-account-links=Administrar enlaces de cuenta
+role_manage-consent=Gestionar los consentimientos
+role_uma_authorization=Obtener permisos
+client_account-console=Consola de cuentas
+client_admin-cli=Administrador CLI
+
+device-activity=Actividad del dispositivo
+
+availableRoles=Roles disponibles
+totpStep3DeviceName=Proporcione un nombre de dispositivo para ayudarle a administrar sus dispositivos OTP.
+
+totpManualStep2=Abra la aplicación e ingrese la clave:
+totpManualStep3=Use los siguientes valores de configuración si la aplicación permite configurarlos:
+totpUnableToScan=¿No se puede escanear?
+totpScanBarcode=¿Escanear código de barras?
+
+totp.totp=Basado en el tiempo
+totp.hotp=Basado en contador
+
+totpType=Tipo
+totpAlgorithm=Algoritmo
+totpDigits=Dígitos
+totpInterval=Intervalo
+totpCounter=Contador
+totpDeviceName=Nombre del dispositivo
+
+totpAppFreeOTPName=Freeotp
+totpAppGoogleName=Autenticador de Google
+totpAppMicrosoftAuthenticatorName=Autenticador de Microsoft
+
+irreversibleAction=Esta acción es irreversible
+deletingImplies=Eliminar su cuenta implica:
+errasingData=Borrando todos sus datos
+loggingOutImmediately=Registrándole inmediatamente
+accountUnusable=Cualquier uso posterior de la aplicación no será posible con esta cuenta
+
+invalidUserMessage=Usuario inválido
+updateReadOnlyAttributesRejectedMessage=Actualización del atributo de solo lectura rechazado
+
+missingTotpDeviceNameMessage=Especifique el nombre del dispositivo.
+
+readOnlyUsernameMessage=No puede actualizar su nombre de usuario, ya que es de solo lectura.
+identityProviderAlreadyLinkedMessage=La identidad federada devuelta por {0} ya está vinculada a otro usuario.
+staleCodeAccountMessage=La página expiró. Por favor, intente una vez más.
+consentDenied=Consentimiento denegado.
+access-denied-when-idp-auth=Acceso denegado al autenticar con {0}
+
+invalidPasswordMaxLengthMessage=Contraseña no válida: longitud máxima {0}.
+invalidPasswordNotEmailMessage=Contraseña no válida: no debe ser igual al correo electrónico.
+invalidPasswordBlacklistedMessage=Contraseña no válida: la contraseña está en la lista negra.
+invalidPasswordGenericMessage=Contraseña no válida: la nueva contraseña no coincide con las políticas de contraseña.
+
+# Authorization
+myResources=Mis recursos
+myResourcesSub=Mis recursos
+doDeny=Denegar
+doRevoke=Revocar
+doApprove=Aprobar
+doRemoveSharing=Eliminar compartir
+doRemoveRequest=Eliminar solicitud
+peopleAccessResource=Personas con acceso a este recurso
+resourceManagedPolicies=Permisos que otorgan acceso a este recurso
+resourceNoPermissionsGrantingAccess=No hay permisos que otorguen acceso a este recurso
+anyAction=Cualquier acción
+description=Descripción
+name=Nombre
+scopes=Ámbitos
+resource=Recurso
+user=Usuario
+peopleSharingThisResource=Personas que comparten este recurso
+shareWithOthers=Compartir con otros
+needMyApproval=Necesitan mi aprobación
+requestsWaitingApproval=Solicitudes esperando aprobación
+icon=Icono
+requestor=Solicitante
+owner=Dueño
+resourcesSharedWithMe=Recursos compartidos conmigo
+permissionRequestion=Solicitud de permiso
+permission=Permiso
+shares=Compartido(s)
+notBeingShared=Este recurso no se está compartiendo.
+notHaveAnyResource=No tienes recursos
+noResourcesSharedWithYou=No hay recursos compartidos contigo
+havePermissionRequestsWaitingForApproval=Tiene {0} solicitud(es) de permiso(s) esperando la aprobación.
+clickHereForDetails=Haga clic aquí para más detalles.
+resourceIsNotBeingShared=El recurso no se está compartiendo
+
+
+# Applications
+applicationName=Nombre
+applicationType=Tipo de aplicación
+applicationInUse=Aplicación de uso interno únicamente
+clearAllFilter=Borrar todos los filtros
+activeFilters=Filtros activos
+filterByName=Filtrar por nombre ...
+allApps=Todas las aplicaciones
+internalApps=Aplicaciones internas
+thirdpartyApps=Aplicaciones de terceros
+appResults=Resultados
+clientNotFoundMessage=Cliente no encontrado.
+
+# Linked account
+authorizedProvider=Proveedor autorizado
+authorizedProviderMessage=Proveedores autorizados vinculados con su cuenta
+identityProvider=Proveedor de identidad
+identityProviderMessage=Para vincular su cuenta con los proveedores de identidad que ha configurado
+socialLogin=Inicio de sesión social
+userDefined=Usuario definido
+removeAccess=Eliminar acceso
+removeAccessMessage=Deberá otorgar acceso nuevamente, si desea usar esta cuenta de la aplicación.
+
+#Authenticator
+authenticatorStatusMessage=La autenticación de dos factores está actualmente
+authenticatorFinishSetUpTitle=Su autenticación de dos factores
+authenticatorFinishSetUpMessage=Cada vez que inicie sesión en su cuenta KeyCloak, se le pedirá que proporcione un código de autenticación de dos factores.
+authenticatorSubTitle=Configurar la autenticación de dos factores
+authenticatorSubMessage=Para mejorar la seguridad de su cuenta, habilite al menos uno de los métodos de autenticación de dos factores disponibles.
+authenticatorMobileTitle=Autenticador móvil
+authenticatorMobileMessage=Use el autenticador móvil para obtener códigos de verificación como la autenticación de dos factores.
+authenticatorMobileFinishSetUpMessage=El autenticador ha estado vinculado a su teléfono.
+authenticatorActionSetup=Configuración
+authenticatorSMSTitle=Código SMS
+authenticatorSMSMessage=KeyCloak enviará el código de verificación a su teléfono como la autenticación de dos factores.
+authenticatorSMSFinishSetUpMessage=Los mensajes de texto se envían a
+authenticatorDefaultStatus=Por defecto
+authenticatorChangePhone=Cambiar el número de teléfono
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Configuración de autenticador móvil
+smscodeIntroMessage=Ingrese su número de teléfono y se enviará un código de verificación a su teléfono.
+mobileSetupStep1=Instale una aplicación de autenticador en su teléfono. Las aplicaciones enumeradas aquí son compatibles.
+mobileSetupStep2=Abra la aplicación y escanee el código de barras:
+mobileSetupStep3=Ingrese el código único proporcionado por la aplicación y haga clic en Guardar para finalizar la configuración.
+scanBarCode=¿Quiere escanear el código de barras?
+enterBarCode=Ingrese el código único
+doCopy=Copiar
+doFinish=Finalizar
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Configuración del código SMS
+chooseYourCountry=Elija su país
+enterYourPhoneNumber=Ingrese su número telefónico
+sendVerficationCode=Envíe el código de verificación
+enterYourVerficationCode=Ingrese su código de verificación
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Configuración de códigos de autenticación de recuperación
+realmName=Reino
+doDownload=Descargar
+doPrint=Imprimir
+generateNewBackupCodes=Generar nuevos códigos de autenticación de recuperación
+backtoAuthenticatorPage=Volver a la página del autenticador
+
+
+#Resources
+resources=Recursos
+sharedwithMe=Compartido conmigo
+share=Compartir
+sharedwith=Compartido con
+accessPermissions=Permisos de acceso
+permissionRequests=Solicitudes de permiso
+approve=Aprobar
+approveAll=Aprobar todo
+people=personas
+perPage=por página
+currentPage=Página actual
+sharetheResource=Compartir el recurso
+group=Grupo
+selectPermission=Seleccionar permiso
+addPeople=Agregue personas con las que  compartir su recurso
+addTeam=Agregue el equipo con quien compartir su recurso
+myPermissions=Mis permisos
+waitingforApproval=A la espera de la aprobación
+anyPermission=Cualquier permiso
+
+# Openshift messages
+openshift.scope.user_info=Información del usuario
+openshift.scope.user_check-access=Información de acceso de usuario
+openshift.scope.user_full=Acceso completo
+openshift.scope.list-projects=Listar proyectos
+
+error-invalid-value=Valor no válido.
+error-invalid-blank=Especifique el valor.
+error-empty=Especifique el valor.
+error-invalid-length=El atributo {0} debe tener una longitud entre {1} y {2}.
+error-invalid-length-too-short=El atributo {0} debe tener una longitud mínima de {1}.
+error-invalid-length-too-long=El atributo {0} debe tener una longitud máxima de {2}.
+error-invalid-email=Dirección de correo electrónico no válida.
+error-invalid-number=Número inválido.
+error-number-out-of-range=El atributo {0} debe ser un número entre {1} y {2}.
+error-number-out-of-range-too-small=El atributo {0} debe tener un valor mínimo de {1}.
+error-number-out-of-range-too-big=El atributo {0} debe tener un valor máximo de {2}.
+error-pattern-no-match=Valor no válido.
+error-invalid-uri=URL inválida.
+error-invalid-uri-scheme=Esquema de URL no válido.
+error-invalid-uri-fragment=Fragmento de URL no válido.
+error-user-attribute-required=Especifique el atributo {0}.
+error-invalid-date=Fecha inválida.
+error-user-attribute-read-only=El campo {0} es de solo lectura.
+error-username-invalid-character=El nombre de usuario contiene algún carácter inválido.
+error-person-name-invalid-character=El nombre contiene algún carácter inválido.
diff --git a/themes/custom-theme-template/account/messages/messages_fa.properties b/themes/custom-theme-template/account/messages/messages_fa.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7d5c387ce3fea16ab69b08d1c9af4009fc08b5bd
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_fa.properties
@@ -0,0 +1,405 @@
+doSave=ذخیره
+doCancel=لغو کنید
+doLogOutAllSessions=از تمام جلسات خارج شوید
+doRemove=حذف
+doAdd=اضافه
+doSignOut=خروج
+doLogIn=ورود
+doLink=پیوند دادن
+noAccessMessage=دسترسی مجاز نیست
+
+personalInfoSidebarTitle=اطلاعات شخصی
+accountSecuritySidebarTitle=امنیت حساب
+signingInSidebarTitle=وارد شدن
+deviceActivitySidebarTitle=فعالیت دستگاه
+linkedAccountsSidebarTitle=حساب های مرتبط
+
+editAccountHtmlTitle=ویرایش حساب
+personalInfoHtmlTitle=اطلاعات شخصی
+federatedIdentitiesHtmlTitle=هویت های فدرال
+accountLogHtmlTitle=گزارش حساب کاربری
+changePasswordHtmlTitle=رمز عبور را تغییر دهید
+deviceActivityHtmlTitle=فعالیت دستگاه
+sessionsHtmlTitle=جلسات
+accountManagementTitle=مدیریت حساب Keycloak
+authenticatorTitle=احراز هویت
+applicationsHtmlTitle=برنامه های کاربردی
+linkedAccountsHtmlTitle=حساب های مرتبط
+
+accountManagementWelcomeMessage=به مدیریت حساب Keycloak خوش آمدید
+personalInfoIntroMessage=اطلاعات اولیه خود را مدیریت کنید
+accountSecurityTitle=امنیت حساب
+accountSecurityIntroMessage=رمز عبور و دسترسی به حساب خود را کنترل کنید
+applicationsIntroMessage=مجوز برنامه خود را برای دسترسی به حساب خود ردیابی و مدیریت کنید
+resourceIntroMessage=منابع خود را بین اعضای تیم به اشتراک بگذارید
+passwordLastUpdateMessage=رمز عبور شما به روز شد
+updatePasswordTitle=رمز عبور را به روز کنید
+updatePasswordMessageTitle=مطمئن شوید که یک رمز عبور قوی انتخاب کرده اید
+updatePasswordMessage=یک رمز عبور قوی حاوی ترکیبی از اعداد، حروف و نمادها است. حدس زدن آن سخت است، شبیه یک کلمه واقعی نیست و فقط برای این حساب استفاده می شود.
+personalSubTitle=اطلاعات شخصی شما
+personalSubMessage=اطلاعات اولیه خود را مدیریت کنید
+
+authenticatorCode=کد یکبار مصرف
+email=پست الکترونیک
+firstName=نام
+givenName=لقب
+fullName=نام و نام خانوادگی
+lastName=نام خانوادگی
+familyName=نام خانوادگی
+password=رمز عبور
+currentPassword=رمز عبور فعلی
+passwordConfirm=تائید
+passwordNew=رمز عبور جدید
+username=نام کاربری
+address=نشانی
+street=خیابان
+locality=شهر یا محله
+region=ایالت، استان یا منطقه
+postal_code=کد پستی
+country=کشور
+emailVerified=ایمیل تایید شده
+website=صفحه وب
+phoneNumber=شماره تلفن
+phoneNumberVerified=شماره تلفن تایید شد
+gender=جنسیت
+birthday=تاریخ تولد
+zoneinfo=منطقه زمانی
+gssDelegationCredential=اعتبارنامه نمایندگی GSS
+
+profileScopeConsentText=مشخصات کاربر
+emailScopeConsentText=آدرس ایمیل
+addressScopeConsentText=نشانی
+phoneScopeConsentText=شماره تلفن
+offlineAccessScopeConsentText=دسترسی آفلاین
+samlRoleListScopeConsentText=نقش های من
+rolesScopeConsentText=نقش های کاربر
+
+role_admin=مدیر
+role_realm-admin=ادمین قلمرو
+role_create-realm=قلمرو ایجاد کنید
+role_view-realm=قلمرو را مشاهده کنید
+role_view-users=مشاهده کاربران
+role_view-applications=مشاهده برنامه ها
+role_view-groups=مشاهده گروه ها
+role_view-clients=مشاهده مشتریان
+role_view-events=مشاهده رویدادها
+role_view-identity-providers=ارائه دهندگان هویت را مشاهده کنید
+role_view-consent=مشاهده رضایت نامه ها
+role_manage-realm=قلمرو را مدیریت کنید
+role_manage-users=مدیریت کاربران
+role_manage-applications=مدیریت برنامه ها
+role_manage-identity-providers=ارائه دهندگان هویت را مدیریت کنید
+role_manage-clients=مشتریان را مدیریت کنید
+role_manage-events=مدیریت رویدادها
+role_view-profile=مشاهده نمایه
+role_manage-account=مدیریت حساب
+role_manage-account-links=لینک های حساب را مدیریت کنید
+role_manage-consent=رضایت نامه ها را مدیریت کنید
+role_read-token=نشانه را بخوانید
+role_offline-access=دسترسی آفلاین
+role_uma_authorization=مجوزها را دریافت کنید
+client_account=حساب
+client_account-console=کنسول حساب
+client_security-admin-console=کنسول مدیریت امنیتی
+client_admin-cli=مدیر CLI
+client_realm-management=مدیریت قلمرو
+client_broker=واسطه
+
+
+requiredFields=فیلدهای مورد نیاز
+allFieldsRequired=همه فیلدها لازم است
+
+backToApplication=&laquo; بازگشت به برنامه
+backTo=بازگشت به {0}
+
+date=تاریخ
+event=رویداد
+ip=آی پی
+client=مشتری
+clients=مشتریان
+details=جزئیات
+started=آغاز شده
+lastAccess=آخرین دسترسی
+expires=منقضی می شود
+applications=برنامه های کاربردی
+
+account=حساب
+federatedIdentity=هویت فدرال
+authenticator=احراز هویت
+device-activity=فعالیت دستگاه
+sessions=جلسات
+log=گزارش
+
+application=کاربرد
+availableRoles=نقش های موجود
+grantedPermissions=مجوزهای اعطا شده
+grantedPersonalInfo=اطلاعات شخصی اعطا شده
+additionalGrants=اعطا شده های اضافی
+action=عمل
+inResource=که در
+fullAccess=دسترسی کامل
+offlineToken=توکن آفلاین
+revoke=لغو امتیاز
+
+configureAuthenticators=تاییدکنندگان هویت پیکربندی شده
+mobile=تلفن همراه
+totpStep1=یکی از برنامه های زیر را روی تلفن همراه خود نصب کنید:
+totpStep2=برنامه را باز کنید و بارکد را اسکن کنید:
+totpStep3=کد یکبار مصرف ارائه شده توسط برنامه را وارد کنید و روی ذخیره کلیک کنید تا تنظیمات تمام شود.
+totpStep3DeviceName=یک نام دستگاه برای کمک به مدیریت دستگاه های OTP خود ارائه دهید.
+
+totpManualStep2=برنامه را باز کنید و کلید را وارد کنید:
+totpManualStep3=اگر برنامه اجازه تنظیم آنها را می دهد، از مقادیر پیکربندی زیر استفاده کنید:
+totpUnableToScan=نمی توانید اسکن کنید؟
+totpScanBarcode=اسکن بارکد?
+
+totp.totp=مبتنی بر زمان
+totp.hotp=مبتنی بر شمارنده
+
+totpType=نوع
+totpAlgorithm=الگوریتم
+totpDigits=ارقام
+totpInterval=فاصله
+totpCounter=شمارنده
+totpDeviceName=نام دستگاه
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=این عمل برگشت ناپذیر است
+deletingImplies=حذف اکانت به این معنی است:
+errasingData=پاک کردن تمام داده های شما
+loggingOutImmediately=خروج بلافاصله شما از سیستم
+accountUnusable=امکان پذیر نبودن هرگونه استفاده بعدی
+
+missingUsernameMessage=لطفا نام کاربری را مشخص کنید.
+missingFirstNameMessage=لطفا نام را مشخص کنید.
+invalidEmailMessage=آدرس ایمیل نامعتبر است.
+missingLastNameMessage=لطفا نام خانوادگی را مشخص کنید.
+missingEmailMessage=لطفا ایمیل را مشخص کنید.
+missingPasswordMessage=لطفا رمز عبور را مشخص کنید.
+notMatchPasswordMessage=گذرواژه ها مطابقت ندارند.
+invalidUserMessage=کاربر نامعتبر
+updateReadOnlyAttributesRejectedMessage=به‌روزرسانی ویژگی فقط خواندنی رد شد
+
+missingTotpMessage=لطفا کد احراز هویت را مشخص کنید.
+missingTotpDeviceNameMessage=لطفا نام دستگاه را مشخص کنید.
+invalidPasswordExistingMessage=رمز عبور موجود نامعتبر است.
+invalidPasswordConfirmMessage=تأیید رمز عبور مطابقت ندارد.
+invalidTotpMessage=کد احراز هویت نامعتبر است.
+
+usernameExistsMessage=نام کاربری از قبل وجود دارد.
+emailExistsMessage=ایمیل از قبل وجود دارد.
+
+readOnlyUserMessage=نمی‌توانید حساب خود را به‌روزرسانی کنید زیرا فقط قابل رویت است.
+readOnlyUsernameMessage=شما نمی توانید نام کاربری خود را به روز کنید زیرا فقط قابل رویت است.
+readOnlyPasswordMessage=نمی توانید رمز عبور خود را به روز کنید زیرا حساب شما فقط قابل رویت است.
+
+successTotpMessage=احراز هویت موبایل پیکربندی شد.
+successTotpRemovedMessage=احراز هویت موبایل حذف شد.
+
+successGrantRevokedMessage=گرنت با موفقیت لغو شد.
+
+accountUpdatedMessage=حساب شما به روز شده است.
+accountPasswordUpdatedMessage=رمز عبور شما به روز شده است.
+
+missingIdentityProviderMessage=ارائه دهنده هویت مشخص نشده است.
+invalidFederatedIdentityActionMessage=اقدام نامعتبر یا از دست رفته است.
+identityProviderNotFoundMessage=ارائه دهنده هویت مشخص شده یافت نشد.
+federatedIdentityLinkNotActiveMessage=این هویت دیگر فعال نیست.
+federatedIdentityRemovingLastProviderMessage=شما نمی توانید آخرین هویت فدرال را حذف کنید زیرا رمز عبور ندارید.
+identityProviderRedirectErrorMessage=هدایت به ارائه دهنده هویت انجام نشد.
+identityProviderRemovedMessage=ارائه دهنده هویت با موفقیت حذف شد.
+identityProviderAlreadyLinkedMessage=هویت فدرال بازگردانده شده توسط {0} قبلاً به کاربر دیگری پیوند داده شده است.
+staleCodeAccountMessage=صفحه منقضی شد لطفا یک بار دیگر امتحان کنید.
+consentDenied=رضایت رد شد.
+access-denied-when-idp-auth=هنگام احراز هویت با {0}، دسترسی ممنوع شد
+
+accountDisabledMessage=حساب غیرفعال است، با سرپرست خود تماس بگیرید.
+
+accountTemporarilyDisabledMessage=حساب به طور موقت غیرفعال است، با سرپرست خود تماس بگیرید یا بعداً دوباره امتحان کنید.
+invalidPasswordMinLengthMessage=رمز عبور نامعتبر: حداقل طول {0}.
+invalidPasswordMaxLengthMessage=رمز عبور نامعتبر: حداکثر طول {0}.
+invalidPasswordMinLowerCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه کوچک باشد.
+invalidPasswordMinDigitsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} رقم عددی باشد.
+invalidPasswordMinUpperCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه بزرگ باشد.
+invalidPasswordMinSpecialCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} کاراکتر خاص باشد.
+invalidPasswordNotUsernameMessage=رمز عبور نامعتبر: نباید برابر با نام کاربری باشد.
+invalidPasswordNotEmailMessage=رمز عبور نامعتبر: نباید برابر با ایمیل باشد.
+invalidPasswordRegexPatternMessage=رمز عبور نامعتبر: با الگو(های) regex مطابقت ندارد.
+invalidPasswordHistoryMessage=گذرواژه نامعتبر: نباید با هیچ یک از رمزهای عبور آخر {0} برابر باشد.
+invalidPasswordBlacklistedMessage=رمز عبور نامعتبر: رمز عبور در لیست سیاه قرار گرفته است.
+invalidPasswordGenericMessage=رمز عبور نامعتبر: رمز عبور جدید با خط استانداردهای رمز عبور مطابقت ندارد.
+
+# Authorization
+myResources=منابع من
+myResourcesSub=منابع من
+doDeny=انکار
+doRevoke=لغو
+doApprove=تایید
+doRemoveSharing=اشتراک گذاری را حذف کنید
+doRemoveRequest=حذف درخواست
+peopleAccessResource=افرادی که به این منبع دسترسی دارند
+resourceManagedPolicies=مجوزهایی که اجازه دسترسی به این منبع را میدهند
+resourceNoPermissionsGrantingAccess=هیچ مجوزی برای دسترسی به این منبع وجود ندارد
+anyAction=هر اقدامی
+description=شرح
+name=نام
+scopes=محدوده ها
+resource=منبع
+user=کاربر
+peopleSharingThisResource=افرادی که این منبع را به اشتراک می گذارند
+shareWithOthers=با دیگران به اشتراک بگذارید
+needMyApproval=نیاز به تایید من
+requestsWaitingApproval=درخواست های شما در انتظار تایید هستند
+icon=آیکون
+requestor=درخواست کننده
+owner=مالک
+resourcesSharedWithMe=منابع به اشتراک گذاشته شده با من
+permissionRequestion=درخواست مجوز
+permission=مجوز
+shares=سهم(ها)
+notBeingShared=این منبع به اشتراک گذاشته نمی شود.
+notHaveAnyResource=شما هیچ منبعی ندارید
+noResourcesSharedWithYou=هیچ منبع مشترکی با شما وجود ندارد
+havePermissionRequestsWaitingForApproval=شما {0} درخواست مجوز در انتظار تأیید دارید.
+clickHereForDetails=برای جزئیات اینجا را کلیک کنید.
+resourceIsNotBeingShared=منبع به اشتراک گذاشته نمی شود
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+# Applications
+applicationName=نام
+applicationType=نوع اپلیکیشن
+applicationInUse=فقط برنامه در حال استفاده
+clearAllFilter=پاک کردن تمام فیلترها
+activeFilters=فیلترهای فعال
+filterByName=فیلتر بر اساس نام ...
+allApps=همه برنامه ها
+internalApps=برنامه های داخلی
+thirdpartyApps=برنامه های شخص ثالث
+appResults=نتایج
+clientNotFoundMessage=مشتری پیدا نشد
+
+# Linked account
+authorizedProvider=ارائه دهنده مجاز
+authorizedProviderMessage=ارائه دهندگان مجاز با حساب شما مرتبط شده اند
+identityProvider=ارائه دهنده هویت
+identityProviderMessage=برای پیوند دادن حساب خود با ارائه دهندگان هویتی که پیکربندی کرده اید
+socialLogin=ورود به سیستم اجتماعی
+userDefined=تعریف شده توسط کاربر
+removeAccess=دسترسی را حذف کنید
+removeAccessMessage=اگر می‌خواهید از این حساب برنامه استفاده کنید، باید دوباره اجازه دسترسی بدهید.
+
+#Authenticator
+authenticatorStatusMessage=وضعیت احراز هویت دو مرحله ای:
+authenticatorFinishSetUpTitle=احراز هویت دو مرحله ای شما
+authenticatorFinishSetUpMessage=هر بار که وارد حساب Keycloak خود می شوید، از شما خواسته می شود یک کد احراز هویت دو مرحله ای ارائه دهید.
+authenticatorSubTitle=احراز هویت دو مرحله ای را تنظیم کنید
+authenticatorSubMessage=برای افزایش امنیت حساب خود، حداقل یکی از روش های احراز هویت دو مرحله ای موجود را فعال کنید.
+authenticatorMobileTitle=ارائه دهندگان احراز هویت تلفن همراه
+authenticatorMobileMessage=از ارائه دهندگان احراز هویت تلفن همراه برای دریافت کدهای تأیید به عنوان احراز هویت دو مرحله ای استفاده کنید.
+authenticatorMobileFinishSetUpMessage=احراز هویت به تلفن شما متصل شده است.
+authenticatorActionSetup=پیکربندی
+authenticatorSMSTitle=کد پیامکی
+authenticatorSMSMessage=Keycloak کد تأیید صحت را به عنوان تأیید هویت دو مرحله ای به تلفن شما ارسال می کند.
+authenticatorSMSFinishSetUpMessage=پیام های متنی ارسال میشوند به
+authenticatorDefaultStatus=پیش فرض
+authenticatorChangePhone=تغییر شماره تلفن
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=راه اندازی دستگاه تأیید اعتبار موبایل
+smscodeIntroMessage=شماره تلفن خود را وارد کنید و یک کد تأیید به تلفن شما ارسال می شود.
+mobileSetupStep1=یک برنامه احراز هویت بر روی گوشی خود نصب کنید. برنامه های لیست شده در اینجا پشتیبانی می شوند.
+mobileSetupStep2=برنامه را باز کنید و بارکد را اسکن کنید:
+mobileSetupStep3=کد یکبار مصرف ارائه شده توسط برنامه را وارد کنید و روی Save کلیک کنید تا تنظیمات تمام شود.
+scanBarCode=می خواهید بارکد را اسکن کنید؟
+enterBarCode=کد یکبار مصرف را وارد کنید
+doCopy=کپی
+doFinish=اتمام
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=تنظیم کد SMS
+chooseYourCountry=کشورتان را انتخاب کنید
+enterYourPhoneNumber=شماره تلفن خود را وارد کنید
+sendVerficationCode=ارسال کد تایید
+enterYourVerficationCode=کد تأیید خود را وارد کنید
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=راه اندازی کدهای احراز هویت بازیابی
+realmName=قلمرو
+doDownload=بارگیری
+doPrint=چاب
+generateNewBackupCodes=کدهای احراز هویت بازیابی جدید را ایجاد کنید
+backtoAuthenticatorPage=بازگشت به صفحه احراز هویت
+
+
+#Resources
+resources=منابع
+sharedwithMe=به اشتراک گذاشته شده با من
+share=اشتراک گذاری
+sharedwith=به اشتراک گذاشته شده با
+accessPermissions=مجوزهای دسترسی
+permissionRequests=درخواست های مجوز
+approve=تایید
+approveAll=همه را تایید کنید
+people=مردم
+perPage=هر صفحه
+currentPage=صفحه فعلی
+sharetheResource=منبع را به اشتراک بگذارید
+group=گروه
+selectPermission=مجوز را انتخاب کنید
+addPeople=افرادی را اضافه کنید تا منابع خود را با آنها به اشتراک بگذارید
+addTeam=تیمی را اضافه کنید تا منبع خود را با آنها به اشتراک بگذارید
+myPermissions=مجوزهای من
+waitingforApproval=منتظر پذیرفته شدن
+anyPermission=هر گونه مجوز
+
+# Openshift messages
+openshift.scope.user_info=اطلاعات کاربر
+openshift.scope.user_check-access=اطلاعات دسترسی کاربر
+openshift.scope.user_full=دسترسی کامل
+openshift.scope.list-projects=لیست پروژه ها
+
+error-invalid-value=مقدار نامعتبر است.
+error-invalid-blank=لطفا مقدار را مشخص کنید
+error-empty=لطفا مقدار را مشخص کنید
+error-invalid-length=مشخصه {0} باید طولی بین {1} و {2} داشته باشد.
+error-invalid-length-too-short=مشخصه {0} باید حداقل طول {1} داشته باشد.
+error-invalid-length-too-long=مشخصه {0} باید حداکثر طول {2} داشته باشد.
+error-invalid-email=آدرس ایمیل نامعتبر است.
+error-invalid-number=عدد نامعتبر.
+error-number-out-of-range=مشخصه {0} باید عددی بین {1} و {2} باشد.
+error-number-out-of-range-too-small=مشخصه {0} باید حداقل مقدار {1} را داشته باشد.
+error-number-out-of-range-too-big=مشخصه {0} باید حداکثر مقدار {2} را داشته باشد.
+error-pattern-no-match=مقدار نامعتبر است.
+error-invalid-uri=URL نامعتبر است.
+error-invalid-uri-scheme=طرح URL نامعتبر است.
+error-invalid-uri-fragment=تکه URL نامعتبر است.
+error-user-attribute-required=لطفاً ویژگی {0} را مشخص کنید.
+error-invalid-date=تاریخ نامعتبر است.
+error-user-attribute-read-only=فیلد {0} فقط قابل رویت است.
+error-username-invalid-character=نام کاربری حاوی نویسه نامعتبر است.
+error-person-name-invalid-character=نام حاوی نویسه نامعتبر است.
diff --git a/themes/custom-theme-template/account/messages/messages_fi.properties b/themes/custom-theme-template/account/messages/messages_fi.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c1a440d0705d4dad5ef8a403cc84cfc329630f50
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_fi.properties
@@ -0,0 +1,400 @@
+doSave=Tallenna
+doCancel=Peruuta
+doLogOutAllSessions=Kirjaudu ulos kaikista sessioista
+doRemove=Poista
+doAdd=Lisää
+doSignOut=Kirjaudu ulos
+doLogIn=Kirjaudu sisään
+doLink=Yhdistä
+noAccessMessage=Pääsy evätty
+
+
+editAccountHtmlTitle=Muokkaa käyttäjää
+personalInfoHtmlTitle=Henkilökohtaiset tiedot
+federatedIdentitiesHtmlTitle=Yhteinen tunnistaminen
+accountLogHtmlTitle=Käyttäjä loki
+changePasswordHtmlTitle=Vaihda salasana
+deviceActivityHtmlTitle=Device Activity
+sessionsHtmlTitle=Istunnot
+accountManagementTitle=Keycloak Käyttäjä Hallinta
+authenticatorTitle=Kaksinkertainen kirjautuminen
+applicationsHtmlTitle=Sovellukset
+linkedAccountsHtmlTitle=Yhdistetyt tilit
+
+accountManagementWelcomeMessage=Tervetuloa Keycloak-tilin hallintaan
+personalInfoIntroMessage=Hallinnoi perustietoja
+accountSecurityTitle=Tilin turvallisuus
+accountSecurityIntroMessage=Hallitse salasanaasi ja tilin pääsyasetuksia
+applicationsIntroMessage=Seuraa ja hallitse sovelluksiasi, joilla on pääsy tilille
+resourceIntroMessage=Jaa resurssejasi tiimin jäsenten kesken
+passwordLastUpdateMessage=Salasanasi päivitettiin
+updatePasswordTitle=Päivitä salasana
+updatePasswordMessageTitle=Varmista, että valitsemasi salasana on vahva
+updatePasswordMessage=Vahva salasana sisältää sekaisin numeroita, kirjaimia ja symboleja. Se on vaikea arvata, ei muistuta oikeita sanoja ja on käytössä vain tällä tilillä.
+personalSubTitle=Henkilökohtaiset tiedot
+personalSubMessage=Hallitse näitä perustietojasi: etunimi, sukunimi ja sähköposti
+
+authenticatorCode=Kertakäyttökoodi
+email=Sähköposti
+firstName=Etunimi
+givenName=Sukunimi
+fullName=Koko nimi
+lastName=Sukunimi
+familyName=Sukunimi
+password=Salasana
+currentPassword=Nykyinen salasana
+passwordConfirm=Salasana uudelleen
+passwordNew=Uusi salasana
+username=Käyttäjänimi
+address=Osoite
+street=Katu
+locality=Kaupunki
+region=Osavaltio, Provinssi, tai Alue
+postal_code=Postinumero
+country=Maa
+emailVerified=Sähköposti vahvistettu
+website=Verkkosivu
+phoneNumber=Puhelinnumero
+phoneNumberVerified=Puhelinnumero varmennettu
+gender=Sukupuoli
+birthday=Syntymäpäivä
+zoneinfo=Aikavyöhyke
+gssDelegationCredential=GSS Delegation Credential
+
+profileScopeConsentText=Käyttäjän profiili
+emailScopeConsentText=Sähköpostiosoite
+addressScopeConsentText=Osoite
+phoneScopeConsentText=Puhelinnumero
+offlineAccessScopeConsentText=Offline-käyttö
+samlRoleListScopeConsentText=Omat roolit
+rolesScopeConsentText=Käyttäjäroolit
+
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Luo realm
+role_view-realm=Näytä realm
+role_view-users=Näytä käyttäjät
+role_view-applications=Näytä sovellukset
+role_view-clients=Näytä asiakkaat
+role_view-events=Näytä tapahtumat
+role_view-identity-providers=Näytä henkilöllisyyden tarjoajat
+role_view-consent=Näytä suostumukset
+role_manage-realm=Hallinnoi realmia
+role_manage-users=Hallinnoi käyttäjiä
+role_manage-applications=Hallinnoi sovelluksia
+role_manage-identity-providers=Hallinnoi henkilöllisyyden tarjoajia
+role_manage-clients=Hallinnoi asiakkaita
+role_manage-events=Hallinnoi tapahtumia
+role_view-profile=Näytä profiili
+role_manage-account=Hallitse tiliä
+role_manage-account-links=Hallitse tilin linkkejä
+role_manage-consent=Hallitse suostumuksia
+role_read-token=Lue token
+role_offline-access=Offline-pääsy
+role_uma_authorization=Hanki käyttöoikeudet
+client_account=Tili
+client_account-console=Tilin konsoli
+client_security-admin-console=Turvallisuus-hallintapaneeli
+client_admin-cli=Admin CLI
+client_realm-management=Realm Hallinta
+client_broker=Broker
+
+
+requiredFields=Vaaditut kentät
+allFieldsRequired=Kaikki kentät vaaditaan
+
+backToApplication=&laquo; Takaisin sovellukseen
+backTo=Takaisin {0}
+
+date=Päivämäärä
+event=Event
+ip=IP
+client=Asiakas
+clients=Asiakkaat
+details=Yksityiskohdat
+started=Luotu
+lastAccess=Viimeksi käytetty
+expires=Vanhenee
+applications=Sovellukset
+
+account=Käyttäjätili
+federatedIdentity=Yhteinen tunnistaminen
+authenticator=Kaksinkertainen kirjautuminen
+device-activity=Laiteaktiviteetti
+sessions=Istunnot
+log=Loki
+
+application=Sovellus
+availableRoles=Saatavilla olevat roolit
+availablePermissions=Saatavilla olevat oikeudet
+grantedPermissions=Myönnetyt oikeudet
+grantedPersonalInfo=Henkilökohtaiset tiedot
+additionalGrants=Vaihtoehtoiset oikeudet
+action=Toiminto
+inResource=in
+fullAccess=Täydet oikeudet
+offlineToken=Offline Token
+revoke=Kumoa oikeudet
+
+configureAuthenticators=Konfiguroitu kaksivaiheinen kirjautuminen
+mobile=Mobiili
+totpStep1=Asenna <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> tai Google Authenticator ohjelma laiteellesi. Kummatkin sovellukset ovat saatavilla <a href="https://play.google.com">Google Play</a> ja Apple App Store kaupoissa.
+totpStep2=Avaa sovellus ja skannaa QR-koodi tai kirjoita avain.
+totpStep3=Täytä saamasi kertaluontoinen koodisi allaolevaan kenttään ja paina Tallenna.
+totpStep3DeviceName=Anna laitteelle nimi, jotta voit hallinnoida OTP-laitteitasi.
+
+totpManualStep2=Avaa sovellus ja syötä koodi
+totpManualStep3=Käytä seuraavia asetuksia mikäli sovellus sallii niiden syötön
+totpUnableToScan=Ongelmia skannuksessa?
+totpScanBarcode=Skannaa viivakoodi?
+
+totp.totp=Aikapohjainen
+totp.hotp=Laskuripohjainen
+
+totpType=Tyyppi
+totpAlgorithm=Algoritmi
+totpDigits=Numerot
+totpInterval=Intervalli
+totpCounter=Laskuri
+totpDeviceName=Laitteen nimi
+
+irreversibleAction=Tätä toimintoa ei voi peruuttaa
+deletingImplies=Tilin poisto tarkoittaa sitä, että:
+errasingData=Kaikki tietosi poistetaan
+loggingOutImmediately=Sinut kirjataan ulos välittömästi
+accountUnusable=Tämän sovelluksen käyttö ei myöhemmin enää ole mahdollista tällä käyttäjätilillä
+
+missingUsernameMessage=Anna käyttäjätunnus.
+missingFirstNameMessage=Anna etunimi.
+invalidEmailMessage=Virheellinen sähköpostiosoite.
+missingLastNameMessage=Anna sukunimi.
+missingEmailMessage=Anna sähköpostiosoite.
+missingPasswordMessage=Anna salasana.
+notMatchPasswordMessage=Salasanat eivät täsmää.
+invalidUserMessage=Väärä käyttäjä
+updateReadOnlyAttributesRejectedMessage=Vain-luku-ominaisuuden päivittäminen hylätty
+
+missingTotpMessage=Ole hyvä ja määritä varmennuskoodi.
+missingTotpDeviceNameMessage=Ole hyvä ja määritä laitteen nimi.
+invalidPasswordExistingMessage=Vanha salasana on virheellinen.
+invalidPasswordConfirmMessage=Salasanan vahivistus ei täsmää.
+invalidTotpMessage=Väärä varmennuskoodi.
+
+usernameExistsMessage=Käyttäjänimi on varattu.
+emailExistsMessage=Sähköpostiosoite on jo käytössä.
+
+readOnlyUserMessage=Et voi muokata käyttäjätiliäsi.
+readOnlyUsernameMessage=Et voi päivittää käyttäjänimeäsi, koska se on "vain-luku"-tilassa.
+readOnlyPasswordMessage=Et voi vaihtaa salasanaa.
+
+successTotpMessage=Mobiiliautentikointi konfiguroitu.
+successTotpRemovedMessage=Mobiiliautentikointi poistettu.
+
+successGrantRevokedMessage=Lupa peruutettu onnistuneesti.
+
+accountUpdatedMessage=Käyttäjätiedot päivitetty.
+accountPasswordUpdatedMessage=Salasana vaihdettu.
+
+missingIdentityProviderMessage=Henkilöllisyyden tarjoajaa ei määritetty.
+invalidFederatedIdentityActionMessage=Väärä tai puuttuva toiminto.
+identityProviderNotFoundMessage=Määritettyä henkilöllisyyden tarjoajaa ei löydy.
+federatedIdentityLinkNotActiveMessage=Tämä henkilöllisyys ei ole enää aktiivinen.
+federatedIdentityRemovingLastProviderMessage=Et voi poistaa viimeistä yhdistettyä henkilöllisyyttä, koska sinulla ei ole salasanaa.
+identityProviderRedirectErrorMessage=Uudelleenohjaus henkilöllisyyden tarjoajaan epäonnistui.
+identityProviderRemovedMessage=Henkilöllisyyden tarjoaja poistettu onnistuneesti.
+identityProviderAlreadyLinkedMessage=Yhdistetty henkilöllisyys, minkä {0} palautti, on jo linkitetty toiseen käyttäjään.
+staleCodeAccountMessage=Sivu vanhentui. Ole hyvä ja yritä vielä kerran.
+consentDenied=Suostumus evätty.
+
+accountDisabledMessage=Tili on poistettu käytöstä, ota yhteyttä järjestelmänvalvojaan.
+
+accountTemporarilyDisabledMessage=Tili on väliaikaisesti poissa käytöstä, ota yhteyttä järjestelmänvalvojaan tai yritä myöhemmin uudelleen.
+invalidPasswordMinLengthMessage=Virheellinen salasana: vähimmäispituus {0}.
+invalidPasswordMaxLengthMessage=Virheellinen salasana: maksimipituus {0}.
+invalidPasswordMinLowerCaseCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} pientä kirjainta.
+invalidPasswordMinDigitsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} numeroa.
+invalidPasswordMinUpperCaseCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} isoa kirjainta.
+invalidPasswordMinSpecialCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} erikoismerkkiä.
+invalidPasswordNotUsernameMessage=Virheellinen salasana: salasana ei saa olla sama kuin käyttäjätunnus.
+invalidPasswordNotEmailMessage=Virheellinen salasana: ei voi olla sama kuin sähköposti.
+invalidPasswordRegexPatternMessage=Virheellinen salasana: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Virheellinen salasana: salasana ei saa olla sama kuin {0} edellistä salasanaasi.
+invalidPasswordBlacklistedMessage=Väärä salasana, salasana on lisätty mustalle listalle.
+invalidPasswordGenericMessage=Virheellinen salasana: uusi salasana ei täytä salasanavaatimuksia.
+
+# Authorization
+myResources=Minun resurssini
+myResourcesSub=Minun resurssini
+doDeny=Kiellä
+doRevoke=Peru
+doApprove=Hyväksy
+doRemoveSharing=Poista Jakaminen
+doRemoveRequest=Poista Pyyntö
+peopleAccessResource=Ihmiset, joilla on pääsy tähän resurssiin
+resourceManagedPolicies=Luvat antavat pääsyn tähän resurssiin
+resourceNoPermissionsGrantingAccess=Ei lupia, mitkä antavat pääsyn tähän resurssiin
+anyAction=Mikä tahansa toiminto
+description=Kuvaus
+name=Nimi
+scopes=Scopes
+resource=Resurssi
+user=Käyttäjä
+peopleSharingThisResource=Ihmiset, jotka jakavat tämän resurssin
+shareWithOthers=Jaa toisten kanssa
+needMyApproval=Tarvitsee minulta luvan
+requestsWaitingApproval=Pyyntösi odottaa hyväksymistä
+icon=Ikoni
+requestor=Pyynnön esittäjä
+owner=Omistaja
+resourcesSharedWithMe=Minun kanssani jaetut resurssit
+permissionRequestion=Lupapyyntö
+permission=Lupa
+shares=jaettu
+notBeingShared=Tätä resurssia ei ole jaettu.
+notHaveAnyResource=Sinulla ei ole mitään resursseja
+noResourcesSharedWithYou=Kanssasi ei ole jaettuna resursseja
+havePermissionRequestsWaitingForApproval=Sinulla on {0} lupapyyntöä odottamassa hyväksyntää.
+clickHereForDetails=Klikkaa tästä nähdäksesi yksityiskohdat.
+resourceIsNotBeingShared=Resurssia ei ole jaettu
+locale_ca=Català
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+# Applications
+applicationName=Nimi
+applicationType=Ohjelman tyyppi
+applicationInUse=Vain sovelluksen sisäinen käyttö
+clearAllFilter=Poista kaikki suodattimet
+activeFilters=Aktiiviset suodattimet
+filterByName=Suodata nimen mukaan ...
+allApps=Kaikki sovellukset
+internalApps=Sisäiset sovellukset
+thirdpartyApps=Kolmannen osapuolen sovellukset
+appResults=Tulokset
+clientNotFoundMessage=Asiakasta ei löytynyt.
+
+# Linked account
+authorizedProvider=Valtuutettu palveluntarjoaja
+authorizedProviderMessage=Tiliisi linkitetyt valtuutetut palveluntarjoajat
+identityProvider=Henkilöllisyyden tarjoaja
+identityProviderMessage=Linkittääksesi tilin asettamiesi henkilöllisyyden tarjoajien kanssa
+socialLogin=Kirjaudu sosiaalisen median tunnuksilla
+userDefined=Käyttäjän määrittämä
+removeAccess=Poista käyttöoikeus
+removeAccessMessage=Sinun täytyy myöntää käyttöoikeus uudelleen, jos haluat käyttää tätä sovellustiliä.
+
+#Authenticator
+authenticatorStatusMessage=Kaksivaiheinen tunnistautuminen on tällä hetkellä
+authenticatorFinishSetUpTitle=Sinun kaksivaiheinen tunnistautuminen
+authenticatorFinishSetUpMessage=Joka kerta kun kirjaudut Keycloak-tilillesi, sinua pyydetään antamaan kaksivaiheisen tunnistautumisen koodi.
+authenticatorSubTitle=Aseta kaksivaiheinen tunnistautuminen
+authenticatorSubMessage=Parantaaksesi tilisi turvallisuutta, ota käyttöön vähintään yksi tarjolla olevista kaksivaiheisen tunnistautumisen tavoista.
+authenticatorMobileTitle=Mobiili-tunnistautuminen
+authenticatorMobileMessage=Käytä mobiili-todentajaa saadaksesi vahvistuskoodit kaksivaiheiseen tunnistautumiseen
+authenticatorMobileFinishSetUpMessage=Tunnistautuminen on sidottu puhelimeesi.
+authenticatorActionSetup=Aseta
+authenticatorSMSTitle=SMS-koodi
+authenticatorSMSMessage=Keycloak lähettää sinulle vahvistuskoodit kaksivaiheista tunnistautumista varten.
+authenticatorSMSFinishSetUpMessage=Tekstiviestit lähetetään numeroon
+authenticatorDefaultStatus=Oletus
+authenticatorChangePhone=Vaihda puhelinnumero
+authenticatorBackupCodesTitle=Varmuuskoodit
+authenticatorBackupCodesMessage=Hanki 8-numeroiset varmuuskoodisi
+authenticatorBackupCodesFinishSetUpMessage=12 varmuuskoodia luotiin tällä kertaa. Jokaisen niistä voi käyttää yhden kerran.
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobiili-todentajan asetukset
+smscodeIntroMessage=Syötä puhelinnumerosi ja vahvistuskoodi lähetetään puhelimeesi.
+mobileSetupStep1=Asenna todentaja-sovellus puhelimeesi. Listatut sovellukset ovat tuettuna.
+mobileSetupStep2=Avaa sovellus ja skannaa viivakoodi:
+mobileSetupStep3=Syötä saamasi kertaluontoinen koodi allaolevaan kenttään ja paina Tallenna viimeistelläksesi asetuksen.
+scanBarCode=Haluatko skannata viivakoodin?
+enterBarCode=Syötä kertaluontoinen koodisi
+doCopy=Kopioi
+doFinish=Valmis
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS-koodin asetukset
+chooseYourCountry=Valitse maa
+enterYourPhoneNumber=Syötä puhelinnumerosi
+sendVerficationCode=Lähetä vahvistuskoodi
+enterYourVerficationCode=Syötä vahvistuskoodisi
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Varmuuskoodien asetukset
+backupcodesIntroMessage=Jos menetät pääsyn puhelimeesi, voit silti kirjautua tilillesi käyttämällä varmuuskoodeja. Pidä ne turvassa ja saatavilla.
+realmName=Realm
+doDownload=Lataa
+doPrint=Tulosta
+doCopy=Copy
+backupCodesTips-1=Jokaisen varmuuskoodin voi käyttää yhden kerran.
+backupCodesTips-2=Nämä koodit on luotu
+generateNewBackupCodes=Luo uudet varmuuskoodit
+backupCodesTips-3=Kun luot uudet varmuuskoodit, nykyiset varmuuskoodit lakkaavat toimimasta.
+backtoAuthenticatorPage=Takaisin Authenticator-sivulle
+
+
+#Resources
+resources=Resurssit
+sharedwithMe=Jaettu kanssani
+share=Jaa
+sharedwith=Jaettu heidän kanssa
+accessPermissions=Käyttöoikeudet
+permissionRequests=Lupapyynnöt
+approve=Hyväksy
+approveAll=Hyväksy kaikki
+people=ihmiset
+perPage=per sivu
+currentPage=Nykyinen sivu
+sharetheResource=Jaa resurssi
+group=Ryhmä
+selectPermission=Valitse lupa
+addPeople=Lisää henkilöitä, joille haluat jakaa resurssisi
+addTeam=Lisää tiimi, jolle haluat jakaa resurssisi
+myPermissions=Oikeuteni
+waitingforApproval=Odottaa hyväksyntää
+anyPermission=Mikä tahansa lupa
+
+# Openshift messages
+openshift.scope.user_info=Käyttäjän tiedot
+openshift.scope.user_check-access=Käyttäjän käyttöoikeustiedot
+openshift.scope.user_full=Täysi käyttöoikeus
+openshift.scope.list-projects=Listaa projektit
+
+error-invalid-value=Väärä arvo.
+error-invalid-blank=Ole hyvä ja määritä arvo.
+error-empty=Ole hyvä ja määritä arvo. 
+error-invalid-length=Ominaisuudella {0} täytyy olla pituus väliltä {1} ja {2}.
+error-invalid-length-too-short=Ominaisuudella {0} täytyy olla minimipituus {1}.
+error-invalid-length-too-long=Ominaisuudella {0} täytyy olla maksimipituus {2}.
+error-invalid-email=Väärä sähköpostiosoite.
+error-invalid-number=Väärä numero.
+error-number-out-of-range=Ominaisuuden {0} täytyy olla numero väliltä {1} ja {2}.
+error-number-out-of-range-too-small=Ominaisuudella {0} täytyy olla minimiarvona {1}.
+error-number-out-of-range-too-big=Ominaisuudella {0} täytyy olla maksimiarvona {2}.
+error-pattern-no-match=Väärä arvo.
+error-invalid-uri=Väärä URL.
+error-invalid-uri-scheme=Väärä URL:n malli.
+error-invalid-uri-fragment=Väärä URL:n osa.
+error-user-attribute-required=Ole hyvä ja määritä ominaisuus {0}.
+error-invalid-date=Väärä päivämäärä.
+error-user-attribute-read-only=Kenttä {0} on "vain luku"-tilassa.
+error-username-invalid-character=Käyttäjänimi sisältää vääriä merkkejä.
+error-person-name-invalid-character=Nimi sisältää vääriä merkkejä.
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_fr.properties b/themes/custom-theme-template/account/messages/messages_fr.properties
new file mode 100644
index 0000000000000000000000000000000000000000..92bfd0c0a063f2ae0504053790ef510eac4a517c
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_fr.properties
@@ -0,0 +1,186 @@
+doSave=Sauvegarder
+doCancel=Annuler
+doLogOutAllSessions=Déconnexion de toutes les sessions
+doRemove=Supprimer
+doAdd=Ajouter
+doSignOut=Déconnexion
+
+editAccountHtmlTitle=Édition du compte
+federatedIdentitiesHtmlTitle=Identités fédérées
+accountLogHtmlTitle=Accès au compte
+changePasswordHtmlTitle=Changer de mot de passe
+sessionsHtmlTitle=Sessions
+accountManagementTitle=Gestion du compte Keycloak
+authenticatorTitle=Authentification
+applicationsHtmlTitle=Applications
+
+authenticatorCode=Mot de passe unique
+email=Courriel
+firstName=Prénom
+givenName=Prénom
+fullName=Nom complet
+lastName=Nom
+familyName=Nom de famille
+password=Mot de passe
+passwordConfirm=Confirmation
+passwordNew=Nouveau mot de passe
+username=Nom d''utilisateur
+address=Adresse
+street=Rue
+locality=Ville ou Localité
+region=État, Province ou Région
+postal_code=Code Postal
+country=Pays
+emailVerified=Courriel vérifié
+gssDelegationCredential=Accréditation de délégation GSS
+
+role_admin=Administrateur
+role_realm-admin=Administrateur du domaine
+role_create-realm=Créer un domaine
+role_view-realm=Voir un domaine
+role_view-users=Voir les utilisateurs
+role_view-applications=Voir les applications
+role_view-clients=Voir les clients
+role_view-events=Voir les événements
+role_view-identity-providers=Voir les fournisseurs d''identités
+role_manage-realm=Gérer le domaine
+role_manage-users=Gérer les utilisateurs
+role_manage-applications=Gérer les applications
+role_manage-identity-providers=Gérer les fournisseurs d''identités
+role_manage-clients=Gérer les clients
+role_manage-events=Gérer les événements
+role_view-profile=Voir le profil
+role_manage-account=Gérer le compte
+role_read-token=Lire le jeton d''authentification
+role_offline-access=Accès hors-ligne
+client_account=Compte
+client_security-admin-console=Console d''administration de la sécurité
+client_admin-cli=Admin CLI
+client_realm-management=Gestion du domaine
+client_broker=Broker
+
+
+requiredFields=Champs obligatoires
+allFieldsRequired=Tous les champs sont obligatoires
+
+backToApplication=&laquo; Revenir à l''application
+backTo=Revenir à {0}
+
+date=Date
+event=Evénement
+ip=IP
+client=Client
+clients=Clients
+details=Détails
+started=Début
+lastAccess=Dernier accès
+expires=Expiration
+applications=Applications
+
+account=Compte
+federatedIdentity=Identité fédérée
+authenticator=Authentification
+sessions=Sessions
+log=Connexion
+
+application=Application
+availablePermissions=Permissions disponibles
+grantedPermissions=Permissions accordées
+grantedPersonalInfo=Informations personnelles accordées
+additionalGrants=Droits additionnels
+action=Action
+inResource=dans
+fullAccess=Accès complet
+offlineToken=Jeton d''authentification hors-ligne
+revoke=Révoquer un droit
+
+configureAuthenticators=Authentifications configurées.
+mobile=Téléphone mobile
+totpStep1=Installez une des applications suivantes sur votre mobile
+totpStep2=Ouvrez l''application et scannez le code-barres ou entrez la clef.
+totpStep3=Entrez le code à usage unique fourni par l''application et cliquez sur Sauvegarder pour terminer.
+
+totpManualStep2=Ouvrez l''application et entrez la clef
+totpManualStep3=Utilisez les valeurs de configuration suivante si l''application les autorise
+totpUnableToScan=Impossible de scanner ?
+totpScanBarcode=Scanner le code-barres ?
+
+totp.totp=Basé sur le temps
+totp.hotp=Basé sur un compteur
+
+totpType=Type
+totpAlgorithm=Algorithme
+totpDigits=Chiffres
+totpInterval=Intervalle
+totpCounter=Compteur
+
+missingUsernameMessage=Veuillez entrer votre nom d''utilisateur.
+missingFirstNameMessage=Veuillez entrer votre prénom.
+invalidEmailMessage=Courriel invalide.
+missingLastNameMessage=Veuillez entrer votre nom.
+missingEmailMessage=Veuillez entrer votre courriel.
+missingPasswordMessage=Veuillez entrer votre mot de passe.
+notMatchPasswordMessage=Les mots de passe ne sont pas identiques
+
+missingTotpMessage=Veuillez entrer le code d''authentification.
+invalidPasswordExistingMessage=Mot de passe existant invalide.
+invalidPasswordConfirmMessage=Le mot de passe de confirmation ne correspond pas.
+invalidTotpMessage=Le code d''authentification est invalide.
+
+usernameExistsMessage=Le nom d''utilisateur existe déjà.
+emailExistsMessage=Le courriel existe déjà.
+
+readOnlyUserMessage=Vous ne pouvez pas mettre à jour votre compte car il est en lecture seule.
+readOnlyPasswordMessage=Vous ne pouvez pas mettre à jour votre mot de passe car votre compte est en lecture seule.
+
+successTotpMessage=L''authentification via téléphone mobile est configurée.
+successTotpRemovedMessage=L''authentification via téléphone mobile est supprimée.
+
+successGrantRevokedMessage=Droit révoqué avec succès.
+
+accountUpdatedMessage=Votre compte a été mis à jour.
+accountPasswordUpdatedMessage=Votre mot de passe a été mis à jour.
+
+missingIdentityProviderMessage=Le fournisseur d''identité n''est pas spécifié.
+invalidFederatedIdentityActionMessage=Action manquante ou invalide.
+identityProviderNotFoundMessage=Le fournisseur d''identité spécifié n''est pas trouvé.
+federatedIdentityLinkNotActiveMessage=Cette identité n''est plus active dorénavant.
+federatedIdentityRemovingLastProviderMessage=Vous ne pouvez pas supprimer votre dernière fédération d''identité sans avoir de mot de passe spécifié.
+identityProviderRedirectErrorMessage=Erreur de redirection vers le fournisseur d''identité.
+identityProviderRemovedMessage=Le fournisseur d''identité a été supprimé correctement.
+identityProviderAlreadyLinkedMessage=Le fournisseur d''identité retourné par {0} est déjà lié à un autre utilisateur.
+
+accountDisabledMessage=Ce compte est désactivé, veuillez contacter votre administrateur.
+
+accountTemporarilyDisabledMessage=Ce compte est temporairement désactivé, veuillez contacter votre administrateur ou réessayez plus tard.
+invalidPasswordMinLengthMessage=Mot de passe invalide: longueur minimale {0}.
+invalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide: doit contenir au moins {0} lettre(s) en minuscule.
+invalidPasswordMinDigitsMessage=Mot de passe invalide: doit contenir au moins {0} chiffre(s).
+invalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide: doit contenir au moins {0} lettre(s) en majuscule.
+invalidPasswordMinSpecialCharsMessage=Mot de passe invalide: doit contenir au moins {0} caractère(s) spéciaux.
+invalidPasswordNotUsernameMessage=Mot de passe invalide: ne doit pas être identique au nom d''utilisateur.
+invalidPasswordRegexPatternMessage=Mot de passe invalide: ne valide pas l''expression rationnelle.
+invalidPasswordHistoryMessage=Mot de passe invalide: ne doit pas être égal aux {0} derniers mots de passe.
+
+applicationName=Nom de l''application
+update=Mettre à jour
+status=Statut
+authenticatorActionSetup=Configurer
+device-activity=Activité des Appareils
+accountSecurityTitle=Sécurité du Compte
+accountManagementWelcomeMessage=Bienvenue dans la Gestion de Compte Keycloak
+
+personalInfoSidebarTitle=Informations personnelles
+accountSecuritySidebarTitle=Sécurité du compte
+signingInSidebarTitle=Authentification
+deviceActivitySidebarTitle=Activité des appareils
+linkedAccountsSidebarTitle=Comptes liés
+
+personalInfoHtmlTitle=Informations Personnelles
+personalInfoIntroMessage=Gérez vos informations de base
+personalSubMessage=Gérez ces informations de base: votre prénom, nom de famille et email
+accountSecurityIntroMessage=Gérez votre mot de passe et l''accès à votre compte
+applicationsIntroMessage=Auditez et gérez les permissions d''accès des applications aux données de votre compte
+applicationType=Type d''application
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_hu.properties b/themes/custom-theme-template/account/messages/messages_hu.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e8aa4a65e80949de9a1982dea5ba2d91f34c24bd
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_hu.properties
@@ -0,0 +1,405 @@
+doSave=Mentés
+doCancel=Mégsem
+doLogOutAllSessions=Minden munkamenet kiléptetése
+doRemove=Törlés
+doAdd=Hozzáadás
+doSignOut=Kilépés
+doLogIn=Belépés
+doLink=Összekötés
+noAccessMessage=Nincs hozzáférés
+
+personalInfoSidebarTitle=Személyes adatok
+accountSecuritySidebarTitle=Fiók biztonság
+signingInSidebarTitle=Bejelentkezés
+deviceActivitySidebarTitle=Eszköz történet
+linkedAccountsSidebarTitle=Összekapcsolt fiókok
+
+editAccountHtmlTitle=Fiók szerkesztése
+personalInfoHtmlTitle=Személyes adatok
+federatedIdentitiesHtmlTitle=Összekapcsolt személyazonosságok
+accountLogHtmlTitle=Fiók napló
+changePasswordHtmlTitle=Jelszó csere
+deviceActivityHtmlTitle=Eszköz történet
+sessionsHtmlTitle=Munkamenetek
+accountManagementTitle=Keycloak Fiók Kezelő
+authenticatorTitle=Hitelesítő
+applicationsHtmlTitle=Alkalmazások
+linkedAccountsHtmlTitle=Összekötött fiókok
+
+accountManagementWelcomeMessage=Üdvözöljük a Keycloak Fiók Kezelőben
+personalInfoIntroMessage=Kezelje az alap személyes adatait
+accountSecurityTitle=Fiók biztonság
+accountSecurityIntroMessage=Szabályozza jelszó és fiók hozzáféréseit
+applicationsIntroMessage=Kezelje alkalmazás jogosultságait, hogy hozzáférjen a fiókjához
+resourceIntroMessage=Ossza meg az erőforrásait csapattagjai között
+passwordLastUpdateMessage=A jelszava ekkor módosult
+updatePasswordTitle=Módosítsa jelszavát
+updatePasswordMessageTitle=Kérem, válasszon erős jelszót
+updatePasswordMessage=Egy erős jelszó számok, betűk és speciális karakterek keveréke, nehéz kitalálni, nem hasonlít valódi (szótári) szóra és csak ehhez a fiókhoz tartozik.
+personalSubTitle=Személyes adatai
+personalSubMessage=Kezelje alapvető személyes adatait: vezetéknév, keresztnév, e-mail cím
+
+authenticatorCode=Egyszer használatos kód
+email=E-mail cím
+firstName=Keresztnév
+givenName=Keresztnév
+fullName=Teljes név
+lastName=Vezetéknév
+familyName=Vezetéknév
+password=Jelszó
+currentPassword=Jelenlegi jelszó
+passwordConfirm=Megerősítés
+passwordNew=Új jelszó
+username=Felhasználónév
+address=Cím
+street=Közterület
+locality=Település
+region=Állam, Tartomány, Megye, Régió
+postal_code=Irányítószám
+country=Ország
+emailVerified=Ellenőrzött e-mail cím
+website=Weboldal
+phoneNumber=Telefonszám
+phoneNumberVerified=Ellenőrzött telefonszám
+gender=Nem
+birthday=Születési dátum
+zoneinfo=Időzóna
+gssDelegationCredential=GSS delegált hitelesítés
+
+profileScopeConsentText=Felhasználói fiók
+emailScopeConsentText=E-mail cím
+addressScopeConsentText=Cím
+phoneScopeConsentText=Telefonszám
+offlineAccessScopeConsentText=Offline hozzáférés
+samlRoleListScopeConsentText=Szerepköreim
+rolesScopeConsentText=Felhasználói szerepkörök
+
+role_admin=Adminisztrátor
+role_realm-admin=Tartomány Adminisztrátor
+role_create-realm=Tartomány létrehozása
+role_view-realm=Tartományok megtekintése
+role_view-users=Felhasználók megtekintése
+role_view-applications=Alkalmazások megtekintése
+role_view-groups=Csoportok megtekintése
+role_view-clients=Kliensek megtekintése
+role_view-events=Események megtekintése
+role_view-identity-providers=Személyazonosság-kezelők megtekintése
+role_view-consent=Jóváhagyó nyilatkozatok megtekintése
+role_manage-realm=Tartományok kezelése
+role_manage-users=Felhasználók kezelése
+role_manage-applications=Alkalmazások kezelése
+role_manage-identity-providers=Személyazonosság-kezelők karbantartása
+role_manage-clients=Kliensek kezelése
+role_manage-events=Események kezelése
+role_view-profile=Fiók megtekintése
+role_manage-account=Fiók kezelése
+role_manage-account-links=Fiók összekötések kezelése
+role_manage-consent=Jóváhagyó nyilatkozatok kezelése
+role_read-token=Olvasási token
+role_offline-access=Offline hozzáférés
+role_uma_authorization=Hozzáférés jogosultságokhoz (UMA)
+client_account=Fiók
+client_account-console=Fiók kezelés
+client_security-admin-console=Biztonsági, adminisztrátor fiók kezelés
+client_admin-cli=Admin CLI
+client_realm-management=Tartomány kezelés
+client_broker=Ügynök
+
+
+requiredFields=Kötelezően kitöltendő mezők
+allFieldsRequired=Minden mező kitöltése kötelező
+
+backToApplication=&laquo; Vissza az alkalmazásba
+backTo=Vissza a {0}-ba/be
+
+date=Dátum
+event=Esemény
+ip=IP cím
+client=Kliens
+clients=Kliensek
+details=Részletek
+started=Kezdete
+lastAccess=Utolsó hozzáférés
+expires=Lejárat
+applications=Alkalmazások
+
+account=Fiók
+federatedIdentity=Összekapcsolt személyazonosság
+authenticator=Hitelesítő
+device-activity=Eszköz történet
+sessions=Munkamentek
+log=Napló
+
+application=Alkalmazás
+availableRoles=Elérhető szerepkörök
+grantedPermissions=Engedélyezett jogosultságok
+grantedPersonalInfo=Engedélyezett személyes adatok
+additionalGrants=További engedélyek
+action=Művelet
+inResource=itt:
+fullAccess=Teljes hozzáférés
+offlineToken=Offline Token
+revoke=Engedély visszavonása
+
+configureAuthenticators=Beállított Hitelesítők
+mobile=Mobil eszköz
+totpStep1=Kérem, telepítse az itt felsorolt alkalmazások egyikét a mobil eszközére:
+totpStep2=Indítsa el az alkalmazást a mobil eszközén és olvassa be ezt a (QR) kódot:
+totpStep3=Adja meg az alkalmazás által generált egyszer használatos kódot majd kattintson a Mentés gombra a beállítás befejezéséhez.
+totpStep3DeviceName=Adja meg a mobil eszköz nevét. Ez a későbbiekben segíthet az eszköz azonosításában.
+
+totpManualStep2=Indítsa el az alkalmazás és adja meg a következő kulcsot:
+totpManualStep3=Használja a következő beállításokat, ha az alkalmazása támogatja ezeket:
+totpUnableToScan=Nem tud (QR) kódot beolvasni?
+totpScanBarcode=Inkább (QR) kódot olvasna be?
+
+totp.totp=Idő alapú
+totp.hotp=Számláló alapú
+
+totpType=Típus
+totpAlgorithm=Algoritmus
+totpDigits=Számjegyek
+totpInterval=Intervallum
+totpCounter=Számláló
+totpDeviceName=Eszköz neve
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=Ez a művelet visszavonhatatlan
+deletingImplies=A felhasználói fiókjának törlésével jár:
+errasingData=Összes adatának törlése
+loggingOutImmediately=Azonnali kijelentkezés
+accountUnusable=Az alkalmazás további használata nem lesz lehetséges ezzel a felhasználói fiókkal
+
+missingUsernameMessage=Kérem, adja meg a felhasználónevét.
+missingFirstNameMessage=Kérem, adja meg a keresztnevet.
+invalidEmailMessage=Érvénytelen e-mail cím.
+missingLastNameMessage=Kérem, adja meg a vezetéknevet.
+missingEmailMessage=Kérem, adja meg az e-mail címet.
+missingPasswordMessage=Kérem, adja meg a jelszót.
+notMatchPasswordMessage=A jelszavak nem egyeznek meg.
+invalidUserMessage=Érvénytelen felhasználó
+updateReadOnlyAttributesRejectedMessage=Csak olvasható tulajdonság módosítása megtagadva
+
+missingTotpMessage=Kérem, adja meg a hitelesítő kódot.
+missingTotpDeviceNameMessage=Kérem, adja meg az eszköz nevét.
+invalidPasswordExistingMessage=Érvénytelen jelenlegi jelszó.
+invalidPasswordConfirmMessage=A jelszavak nem egyeznek meg.
+invalidTotpMessage=Érvénytelen hitelesítő kód.
+
+usernameExistsMessage=Ez a felhasználónév már foglalt.
+emailExistsMessage=Ez az e-mail cím már foglalt.
+
+readOnlyUserMessage=A felhasználói fiókja csak olvasható, módosítás nem lehetséges.
+readOnlyUsernameMessage=A felhasználónév nem módosítható.
+readOnlyPasswordMessage=A felhasználói fiókja csak olvasható, így jelszó módosítás nem lehetséges.
+
+successTotpMessage=A mobil hitelesítőt beállítottuk.
+successTotpRemovedMessage=A mobil hitelesítőt eltávolítottuk.
+
+successGrantRevokedMessage=Az engedélyt visszavontuk.
+
+accountUpdatedMessage=Felhasználói fiókját módosítottuk.
+accountPasswordUpdatedMessage=Jelszavát módosítottuk.
+
+missingIdentityProviderMessage=Nincs megadva személyazonosság-kezelő.
+invalidFederatedIdentityActionMessage=Érvénytelen, vagy nem létező művelet.
+identityProviderNotFoundMessage=A megadott személyazonosság-kezelő nem található.
+federatedIdentityLinkNotActiveMessage=Ez a személyazonosság összekötés már nem érvényes.
+federatedIdentityRemovingLastProviderMessage=Az utolsó összekapcsolt személyazonosság nem törölhető, mert Ön nem rendelkezik érvényes jelszóval.
+identityProviderRedirectErrorMessage=Nem sikerült az átirányítás a személyazonosság-kezelőre.
+identityProviderRemovedMessage=A személyazonosság-kezelő összekötést töröltük.
+identityProviderAlreadyLinkedMessage=Az összekapcsolt személyazonosság-kezelő által bizotsított személyazonosság már össze van kötve egy másik felhasználói fiókkal.
+staleCodeAccountMessage=Az oldal érvényességi ideje lejárt. Kérem, próbálja meg újra a kérést.
+consentDenied=Jóváhagyó nyilatkozat elutasítva.
+access-denied-when-idp-auth=Hozzáférés megtagadva hitelesítés során: {0}
+
+accountDisabledMessage=Felhasználói fiókja inaktív, kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+
+accountTemporarilyDisabledMessage=Felhasználói fiókja átmenetileg inaktív, kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával, vagy próbálkozzon később.
+invalidPasswordMinLengthMessage=Érvénytelen jelszó: minimum hossz: {0}.
+invalidPasswordMaxLengthMessage=Érvénytelen jelszó: maximum hossz: {0}.
+invalidPasswordMinLowerCaseCharsMessage=Érvénytelen jelszó: legalább {0} darab kisbetűt kell tartalmaznia.
+invalidPasswordMinDigitsMessage=Érvénytelen jelszó: legalább {0} darab számjegyet kell tartalmaznia.
+invalidPasswordMinUpperCaseCharsMessage=Érvénytelen jelszó: legalább {0} darab nagybetűt kell tartalmaznia.
+invalidPasswordMinSpecialCharsMessage=Érvénytelen jelszó: legalább {0} darab speciális karaktert (pl. #!$@ stb.) kell tartalmaznia.
+invalidPasswordNotUsernameMessage=Érvénytelen jelszó: nem lehet azonos a felhasználónévvel.
+invalidPasswordNotEmailMessage=Érvénytelen jelszó: nem lehet azonos az e-mail címmel.
+invalidPasswordRegexPatternMessage=Érvénytelen jelszó: a jelszó nem illeszkedik a megadott reguláris kifejezés mintára.
+invalidPasswordHistoryMessage=Érvénytelen jelszó: nem lehet azonos az utolsó {0} darab, korábban alkalmazott jelszóval.
+invalidPasswordBlacklistedMessage=Érvénytelen jelszó: a jelszó tiltó listán szerepel.
+invalidPasswordGenericMessage=Érvénytelen jelszó: az új jelszó nem felel meg a jelszó házirendnek.
+
+# Authorization
+myResources=Erőforrásaim
+myResourcesSub=Erőforrásaim
+doDeny=Tiltás
+doRevoke=Visszavonás
+doApprove=Jóváhagyás
+doRemoveSharing=Megosztás törlése
+doRemoveRequest=Kérelem törlése
+peopleAccessResource=Az erőforráshoz hozzáférő felhasználók
+resourceManagedPolicies=Az erőforrás hozzáféréshez szükséges jogosultságok
+resourceNoPermissionsGrantingAccess=Az erőforrás hozzáféréshez nem szükségesek jogosultságok
+anyAction=Bármelyik művelet
+description=Leírás
+name=Név
+scopes=Hatókör
+resource=Erőforrás
+user=Felhasználó
+peopleSharingThisResource=Az erőforrást megosztó felhasználók
+shareWithOthers=Megosztás más felhasználókkal
+needMyApproval=A jóváhagyásom szükséges
+requestsWaitingApproval=A kérése jóváhagyásra vár
+icon=Ikon
+requestor=Kérelmező
+owner=Tulajdonos
+resourcesSharedWithMe=Velem megosztott erőforrások
+permissionRequestion=Jogosultság kérelem
+permission=Jogosultság
+shares=megosztás(ok)
+notBeingShared=Az erőforrás nincs megosztva
+notHaveAnyResource=Nincsen erőforrása
+noResourcesSharedWithYou=Nincsenek Önnel megosztott erőforrásai
+havePermissionRequestsWaitingForApproval=Önnek {0} darab várakozó, jóváhagyandó jogosultság kérése van.
+clickHereForDetails=Kattintson ide a részletekért.
+resourceIsNotBeingShared=Az erőforrás nincs megosztva
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fr=Français
+locale_hu=Magyar
+locale_fa=فارسی
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+
+# Applications
+applicationName=Név
+applicationType=Alkalmazás típus
+applicationInUse=Csak használatban lévő alkalmazás
+clearAllFilter=Szűrő mezők törlése
+activeFilters=Aktív szűrők
+filterByName=Név alapú keresés
+allApps=Minden alkalmazás
+internalApps=Belső alkalmazások
+thirdpartyApps=Harmadik féltől származó alkalmazások
+appResults=Eredmény
+clientNotFoundMessage=A kliens nem található.
+
+# Linked account
+authorizedProvider=Meghatalmazott szolgáltató
+authorizedProviderMessage=A felhasználói fiókjához kötött meghatalmazott szolgáltatók
+identityProvider=Személyazonosság-kezelő
+identityProviderMessage=Fiókja személyazonosság-kezelőkhöz kötéséhez eddig ezeket a beállításokat adta meg
+socialLogin=Közösségi bejelentkezés
+userDefined=Felhasználó által meghatározott
+removeAccess=Hozzáférés törlése
+removeAccessMessage=Újra engedélyeznie kell a hozzáférést az alkalmazás ismételt használatához.
+
+#Authenticator
+authenticatorStatusMessage=A kétszintű hitelesítés jelenleg
+authenticatorFinishSetUpTitle=Kétszintű hitelesítés
+authenticatorFinishSetUpMessage=Minden Keycloak fiók bejelentkezéskor kérni fogunk Öntől egy második szintű hitelesítő kódot.
+authenticatorSubTitle=Állítsa be a második szintű hitelesítést
+authenticatorSubMessage=Felhasználói fiókjának biztonsági szintjét növelheti, ha legalább egy második szintű hitelesítést is bekapcsol az elérhető eljárások közül.
+authenticatorMobileTitle=Mobil eszköz alapú hitelesítés
+authenticatorMobileMessage=Mobil eszközön generált ellenőrző kód, mint második szintű hitelesítés.
+authenticatorMobileFinishSetUpMessage=A hitelesítés a mobil eszközéhez kötődik.
+authenticatorActionSetup=Beállítás
+authenticatorSMSTitle=SMS kód
+authenticatorSMSMessage=A Keycloak SMS ellenőrző kódot küld a telefonjára (második szintű hitelesítő kód).
+authenticatorSMSFinishSetUpMessage=A következő telefonszámokra SMS-t küldünk
+authenticatorDefaultStatus=Alapértelmezett
+authenticatorChangePhone=Módosítsa telefonszámát
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobil hitelesítő eszköz beállítása
+smscodeIntroMessage=Adja meg a telefonszámát, melyre egy ellenőrző kódot küldünk.
+mobileSetupStep1=Telepítsen egy hitelesítő alkalmazást mobil eszközére az itt felsorolt, támogatott, alkalmazások közül.
+mobileSetupStep2=Indítsa el az alkalmazást és olvassa be a következő (QR) kódot:
+mobileSetupStep3=Adja meg a mobil alkalmazás által generált egyszer használatos kódot, majd kattintson a Mentés gombra a beállításhoz.
+scanBarCode=Inkább (QR) kódot olvasna be?
+enterBarCode=Adja meg az egyszer használatos kódot
+doCopy=Másolás
+doFinish=Befejezés
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS kód beállítása
+chooseYourCountry=Válassza ki az országot
+enterYourPhoneNumber=Adja meg a telefonszámát
+sendVerficationCode=Ellenőrző kód küldése
+enterYourVerficationCode=Adja meg az ellenőrző kódot
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Tartalék kódok beállítása
+realmName=Tartomány
+doDownload=Letöltés
+doPrint=Nyomtatás
+generateNewBackupCodes=Új tartalék kódok generálása
+backtoAuthenticatorPage=Vissza a hitelesítő lapra
+
+
+#Resources
+resources=Erőforrások
+sharedwithMe=Velem megosztott erőforrások
+share=Megosztás
+sharedwith=Megosztva
+accessPermissions=Hozzáférési jogosultságok
+permissionRequests=Jogosultság kérések
+approve=Jóváhagyás
+approveAll=Mindet jóváhagyja
+people=felhasználó
+perPage=oldalanként
+currentPage=Aktuális oldal
+sharetheResource=Erőforrás megosztása
+group=Csoport
+selectPermission=Jogosultság választás
+addPeople=Adjon hozzá felhasználókat az erőforrás megosztáshoz
+addTeam=Adjon meg csoportot az erőforrás megosztáshoz
+myPermissions=Jogosultságaim
+waitingforApproval=Jóváhagyásra vár
+anyPermission=Bármilyen jogosultság
+
+# Openshift messages
+openshift.scope.user_info=Felhasználó adatok
+openshift.scope.user_check-access=Felhasználó hozzáférés adatok
+openshift.scope.user_full=Teljes hozzáférés
+openshift.scope.list-projects=Projektek listája
+
+error-invalid-value=Érvénytelen érték
+error-invalid-blank=Kérem, adja meg a mező értékét.
+error-empty=Kérem, adja meg a mező értékét.
+error-invalid-length={0} hossza {1} és {2} karakter között kell legyen.
+error-invalid-length-too-short={0} minimális hossza {1} karakter.
+error-invalid-length-too-long={0} maximális hossza {2} karakter.
+error-invalid-email=Érvénytelen e-mail cím.
+error-invalid-number=Érvénytelen szám.
+error-number-out-of-range={0} értéke {1} és {2} közötti szám kell legyen.
+error-number-out-of-range-too-small={0} minimum értéke: {1}.
+error-number-out-of-range-too-big={0} maximum értéke: {2}.
+error-pattern-no-match=Érvénytelen érték.
+error-invalid-uri=Érvénytelen URL.
+error-invalid-uri-scheme=Érvénytelen URL séma.
+error-invalid-uri-fragment=Érvénytelen URL fragmens.
+error-user-attribute-required=Kérem, adja meg a(z) {0} értékét.
+error-invalid-date=Érvénytelen dátum.
+error-user-attribute-read-only=A(z) {0} mező csak olvasható.
+error-username-invalid-character=A felhasználónév érvénytelen karaktert tartalmaz.
+error-person-name-invalid-character=A név érvénytelen karaktert tartalmaz.
diff --git a/themes/custom-theme-template/account/messages/messages_it.properties b/themes/custom-theme-template/account/messages/messages_it.properties
new file mode 100644
index 0000000000000000000000000000000000000000..74d4bc713f8019fa43c3f2d599499612d24cb920
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_it.properties
@@ -0,0 +1,342 @@
+doSave=Salva
+doCancel=Annulla
+doLogOutAllSessions=Effettua il logout da tutte le sessioni
+doRemove=Elimina
+doAdd=Aggiungi
+doSignOut=Esci
+doLogIn=Log In
+doLink=Link
+
+personalInfoSidebarTitle=Informazioni personali
+accountSecuritySidebarTitle=Sicurezza dell''account
+signingInSidebarTitle=Impostazioni di accesso
+deviceActivitySidebarTitle=Attività del dispositivo
+linkedAccountsSidebarTitle=Account collegati
+
+editAccountHtmlTitle=Modifica Account
+personalInfoHtmlTitle=Informazioni personali
+federatedIdentitiesHtmlTitle=Identità federate
+accountLogHtmlTitle=Log dell''account
+changePasswordHtmlTitle=Cambia password
+deviceActivityHtmlTitle=Attività dei dispositivi
+sessionsHtmlTitle=Sessioni
+accountManagementTitle=Gestione degli account di Keycloak
+authenticatorTitle=Autenticatore
+applicationsHtmlTitle=Applicazioni
+linkedAccountsHtmlTitle=Account collegati
+
+accountManagementWelcomeMessage=Benvenuto nella gestione degli account di Keycloak
+personalInfoIntroMessage=Gestisci le tue informazioni di base
+accountSecurityTitle=Sicurezza dell''account
+accountSecurityIntroMessage=Controlla la tua password e gli accessi dell''account
+applicationsIntroMessage=Traccia e gestisci i permessi delle applicazioni nell''accesso al tuo account
+resourceIntroMessage=Condividi le tue risorse tra i membri del team
+passwordLastUpdateMessage=La tua password è stata aggiornata il
+updatePasswordTitle=Aggiornamento password
+updatePasswordMessageTitle=Assicurati di scegliere una password robusta
+updatePasswordMessage=Una password robusta contiene un misto di numeri, lettere, e simboli. È difficile da indovinare, non assomiglia a una parola reale, ed è utilizzata solo per questo account.
+personalSubTitle=Le tue informazioni personali
+personalSubMessage=Gestisce queste informazioni di base: il tuo nome, cognome, e indirizzo email
+
+authenticatorCode=Codice monouso
+
+email=Email
+firstName=Nome
+givenName=Nome
+fullName=Nome completo
+lastName=Cognome
+familyName=Cognome
+password=Password
+currentPassword=Password attuale
+passwordConfirm=Conferma password
+passwordNew=Nuova password
+username=Username
+address=Indirizzo
+street=Via
+locality=Città o località
+region=Stato, Provincia, o Regione
+postal_code=CAP
+country=Paese
+emailVerified=Email verificata
+gssDelegationCredential=Credenziali delega GSS
+
+profileScopeConsentText=Profilo utente
+emailScopeConsentText=Indirizzo email
+addressScopeConsentText=Indirizzo
+phoneScopeConsentText=Numero di telefono
+offlineAccessScopeConsentText=Accesso offline
+samlRoleListScopeConsentText=I miei ruoli
+rolesScopeConsentText=Ruoli utente
+role_admin=Admin
+role_realm-admin=Realm admin
+role_create-realm=Crea realm
+role_view-realm=Visualizza realm
+role_view-users=Visualizza utenti
+role_view-applications=Visualizza applicazioni
+role_view-clients=Visualizza client
+role_view-events=Visualizza eventi
+role_view-identity-providers=Visualizza identity provider
+role_view-consent=Visualizza consensi
+role_manage-realm=Gestisci realm
+role_manage-users=Gestisci utenti
+role_manage-applications=Gestisci applicazioni
+role_manage-identity-providers=Gestisci identity provider
+role_manage-clients=Gestisci client
+role_manage-events=Gestisci eventi
+role_view-profile=Visualizza profilo
+role_manage-account=Gestisci account
+role_manage-account-links=Gestisci i link dell''account
+role_manage-consent=Gestisci consensi
+role_read-token=Leggi token
+role_offline-access=Accesso offline
+role_uma_authorization=Ottieni permessi
+client_account=Account
+client_account-console=Console account
+client_security-admin-console=Console di amministrazione di sicurezza
+client_admin-cli=Admin CLI
+client_realm-management=Gestione realm
+client_broker=Broker
+
+
+requiredFields=Campi obbligatori
+allFieldsRequired=Tutti campi obbligatori
+
+backToApplication=&laquo; Torna all''applicazione
+backTo=Torna a {0}
+
+date=Data
+event=Evento
+ip=IP
+client=Client
+clients=Client
+details=Dettagli
+started=Iniziato
+lastAccess=Ultimo accesso
+expires=Scade
+applications=Applicazioni
+
+account=Account
+federatedIdentity=Identità federate
+authenticator=Autenticatore
+device-activity=Attività dei dispositivi
+sessions=Sessioni
+log=Log
+
+application=Applicazione
+availablePermissions=Autorizzazioni disponibili
+grantedPermissions=Autorizzazioni concesse
+grantedPersonalInfo=Informazioni personali concesse
+additionalGrants=Ulteriori concessioni
+action=Azione
+inResource=in
+fullAccess=Accesso completo
+offlineToken=Token offline
+revoke=Revoca concessione
+
+configureAuthenticators=Autenticatori configurati
+mobile=Dispositivo mobile
+totpStep1=Installa una delle seguenti applicazioni sul tuo dispositivo mobile
+totpStep2=Apri l''applicazione e scansiona il codice QR
+totpStep3=Scrivi il codice monouso fornito dall''applicazione e clicca Salva per completare il setup.
+totpStep3DeviceName=Fornisci il nome del dispositivo per aiutarti a gestire i dispositivi di autenticazione.
+
+totpManualStep2=Apri l''applicazione e scrivi la chiave
+totpManualStep3=Usa le seguenti impostazioni se l''applicazione lo consente
+totpUnableToScan=Non riesci a scansionare il codice QR?
+totpScanBarcode=Vuoi scansionare il codice QR?
+
+totp.totp=Basato sull''ora
+totp.hotp=Basato sul contatore
+
+totpType=Tipo
+totpAlgorithm=Algoritmo
+totpDigits=Cifre
+totpInterval=Intervallo
+totpCounter=Contatore
+totpDeviceName=Nome dispositivo
+
+missingUsernameMessage=Inserisci lo username.
+missingFirstNameMessage=Inserisci il nome.
+invalidEmailMessage=Indirizzo email non valido.
+missingLastNameMessage=Inserisci il cognome.
+missingEmailMessage=Inserisci l''indirizzo email.
+missingPasswordMessage=Inserisci la password.
+notMatchPasswordMessage=Le password non coincidono.
+invalidUserMessage=Utente non valido
+
+missingTotpMessage=Inserisci il codice di autenticazione.
+missingTotpDeviceNameMessage=Inserisci il nome del dispositivo di autenticazione.
+invalidPasswordExistingMessage=Password esistente non valida.
+invalidPasswordConfirmMessage=La password di conferma non coincide.
+invalidTotpMessage=Codice di autenticazione non valido.
+
+usernameExistsMessage=Username già esistente.
+emailExistsMessage=Email già esistente.
+
+readOnlyUserMessage=Non puoi aggiornare il tuo account poiché è in modalità sola lettura.
+readOnlyUsernameMessage=Non puoi aggiornare il tuo nome utente poiché è in modalità sola lettura.
+readOnlyPasswordMessage=Non puoi aggiornare il tuo account poiché è in modalità sola lettura.
+
+successTotpMessage=Autenticatore mobile configurato.
+successTotpRemovedMessage=Autenticatore mobile eliminato.
+
+successGrantRevokedMessage=Concessione revocata con successo.
+
+accountUpdatedMessage=Il tuo account è stato aggiornato.
+accountPasswordUpdatedMessage=La tua password è stata aggiornata.
+
+missingIdentityProviderMessage=Identity provider non specificato.
+invalidFederatedIdentityActionMessage=Azione non valida o mancante.
+identityProviderNotFoundMessage=L''identity provider specificato non è stato trovato.
+federatedIdentityLinkNotActiveMessage=Questo identity non è più attivo.
+federatedIdentityRemovingLastProviderMessage=Non puoi rimuovere l''ultima identità federata poiché non hai più la password.
+identityProviderRedirectErrorMessage=Il reindirizzamento all''identity provider è fallito.
+identityProviderRemovedMessage=Identity provider eliminato correttamente.
+identityProviderAlreadyLinkedMessage=L''identità federata restituita da {0} è già collegata ad un altro utente.
+staleCodeAccountMessage=La pagina è scaduta. Prova di nuovo.
+consentDenied=Consenso negato.
+
+accountDisabledMessage=Account disabilitato, contatta l''amministratore.
+
+accountTemporarilyDisabledMessage=L''account è temporaneamente disabilitato, contatta l''amministratore o riprova più tardi.
+invalidPasswordMinLengthMessage=Password non valida: lunghezza minima {0}.
+invalidPasswordMinLowerCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri minuscoli.
+invalidPasswordMinDigitsMessage=Password non valida: deve contenere almeno {0} numeri.
+invalidPasswordMinUpperCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri maiuscoli.
+invalidPasswordMinSpecialCharsMessage=Password non valida: deve contenere almeno {0} caratteri speciali.
+invalidPasswordNotUsernameMessage=Password non valida: non deve essere uguale allo username.
+invalidPasswordRegexPatternMessage=Password non valida: fallito il match con una o più espressioni regolari.
+invalidPasswordHistoryMessage=Password non valida: non deve essere uguale a una delle ultime {0} password.
+invalidPasswordBlacklistedMessage=Password non valida: la password non è consentita.
+invalidPasswordGenericMessage=Password non valida: la nuova password non rispetta le indicazioni previste.
+
+# Authorization
+myResources=Le mie risorse
+myResourcesSub=Le mie risorse
+doDeny=Nega
+doRevoke=Revoca
+doApprove=Approva
+doRemoveSharing=Rimuovi condivisione
+doRemoveRequest=Rimuovi richiesta
+peopleAccessResource=Persone che hanno accesso a questa risorsa
+resourceManagedPolicies=Permessi che danno accesso a questa risorsa
+resourceNoPermissionsGrantingAccess=Nessun permesso dà accesso a questa risorsa
+anyAction=Qualsiasi azione
+description=Descrizione
+name=Nome
+scopes=Ambito
+resource=Risorsa
+user=Utente
+peopleSharingThisResource=Persone che condividono questa risorsa
+shareWithOthers=Condividi con altri
+needMyApproval=Richiede la mia approvazione
+requestsWaitingApproval=La tua richiesta è in attesa di approvazione
+icon=Icona
+requestor=Richiedente
+owner=Proprietario
+resourcesSharedWithMe=Risorse condivise con me
+permissionRequestion=Richiesta di permesso
+permission=Permesso
+shares=condivisioni
+notBeingShared=Questa risorsa non è in condivisione.
+notHaveAnyResource=Non hai nessuna risorsa
+noResourcesSharedWithYou=Non ci sono risorse condivise con te
+havePermissionRequestsWaitingForApproval=Hai {0} richiesta(e) di permesso in attesa di approvazione.
+clickHereForDetails=Clicca qui per i dettagli.
+resourceIsNotBeingShared=La risorsa non è in condivisione
+
+locale_it=Italiano
+locale_fa=فارسی
+
+# Applications
+applicationName=Nome
+applicationType=Tipo applicazione
+applicationInUse=In-use app only
+clearAllFilter=Azzera tutti i filtri
+activeFilters=Filtri attivi
+filterByName=Filtra per nome ...
+allApps=Tutte le applicazioni
+internalApps=Applicazioni interne
+thirdpartyApps=Applicazioni di terze parti
+appResults=Risultati
+clientNotFoundMessage=Client non trovato.
+
+# Linked account
+authorizedProvider=Provider autorizzato
+authorizedProviderMessage=Provider autorizzati collegati al tuo account
+identityProvider=Identity provider
+identityProviderMessage=Collegare il tuo account con gli identity provider che hai configurato
+socialLogin=Social Login
+userDefined=Definito dall''utente
+removeAccess=Rimuovi accesso
+removeAccessMessage=Devi concedere di nuovo l''accesso, se vuoi utilizzare l''account di questa applicazione.
+
+#Authenticator
+authenticatorStatusMessage=L''autenticazione a due fattori è attualmente
+authenticatorFinishSetUpTitle=La tua autenticazione a due fattori
+authenticatorFinishSetUpMessage=Ogni volta che effettui l''accesso al tuo account Keycloak, ti verrà richiesto di fornire il tuo codice di autenticazione a due fattori.
+authenticatorSubTitle=Imposta l''autenticazione a due fattori
+authenticatorSubMessage=Per incrementare la sicurezza del tuo account, attiva almeno uno dei metodi disponibili per l''autenticazione a due fattori.
+authenticatorMobileTitle=Autenticatore mobile
+authenticatorMobileMessage=Utilizza l''autenticatore mobile per ottenere i codici di verifica per l''autenticazione a due fattori.
+authenticatorMobileFinishSetUpMessage=L''autenticatore è stato collegato al tuo telefono.
+authenticatorActionSetup=Set up
+authenticatorSMSTitle=Codice SMS
+authenticatorSMSMessage=Keycloak invierà il codice di verifica al tuo telefono per l''autenticazione a due fattori.
+authenticatorSMSFinishSetUpMessage=I messaggi di testo vengono inviati a
+authenticatorDefaultStatus=Default
+authenticatorChangePhone=Cambia numero di telefono
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Setup autenticatore mobile
+smscodeIntroMessage=Inserisci il tuo numero di telefono e ti verrà inviato un codice di verifica.
+mobileSetupStep1=Installa un''applicazione di autenticazione sul tuo telefono. Sono supportate le applicazioni qui elencate.
+mobileSetupStep2=Apri l''applicazione e scansiona il codice QR:
+mobileSetupStep3=Inserisci il codice monouso fornito dall''applicazione e clicca Salva per completare il setup.
+scanBarCode=Vuoi scansionare il codice QR?
+enterBarCode=Inserisci il codice monouso
+doCopy=Copia
+doFinish=Termina
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Setup codice SMS
+chooseYourCountry=Scegli la tua nazione
+enterYourPhoneNumber=Inserisci il tuo numero di telefono
+sendVerficationCode=Invia il codice di verifica
+enterYourVerficationCode=Inserisci il codice di verifica
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Setup backup codici
+realmName=Realm
+doDownload=Download
+doPrint=Stampa
+generateNewBackupCodes=Genera dei nuovi codici di backup
+backtoAuthenticatorPage=Torna alla pagina dell''autenticatore
+
+
+#Resources
+resources=Risorse
+sharedwithMe=Condiviso con me
+share=Condiviso
+sharedwith=Condiviso con
+accessPermissions=Permessi di accesso
+permissionRequests=Richieste di permesso
+approve=Approva
+approveAll=Approva tutti
+people=persone
+perPage=per pagina
+currentPage=Pagina corrente
+sharetheResource=Condividi la risorsa
+group=Gruppo
+selectPermission=Seleziona permessi
+addPeople=Aggiungi persone con le quali condividere la tua risorsa
+addTeam=Aggiungi gruppi con i quali condividere la tua risorsa
+myPermissions=Miei permessi
+waitingforApproval=Attesa dell''approvazione
+anyPermission=Qualsiasi permesso
+
+# Openshift messages
+openshift.scope.user_info=Informazioni utente
+openshift.scope.user_check-access=Informazioni per l''accesso dell''utente
+openshift.scope.user_full=Accesso completo
+openshift.scope.list-projects=Elenca progetti
diff --git a/themes/custom-theme-template/account/messages/messages_ja.properties b/themes/custom-theme-template/account/messages/messages_ja.properties
new file mode 100644
index 0000000000000000000000000000000000000000..abd9d7ec8ee7ff3bf845e742c10c3c66f42090a7
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_ja.properties
@@ -0,0 +1,336 @@
+doSave=保存
+doCancel=キャンセル
+doLogOutAllSessions=全セッションからログアウト
+doRemove=削除
+doAdd=追加
+doSignOut=サインアウト
+doLogIn=ログイン
+doLink=リンク
+
+
+editAccountHtmlTitle=アカウントの編集
+personalInfoHtmlTitle=個人情報
+federatedIdentitiesHtmlTitle=連携済みアイデンティティー
+accountLogHtmlTitle=アカウントログ
+changePasswordHtmlTitle=パスワード変更
+deviceActivityHtmlTitle=デバイス・アクティビティー
+sessionsHtmlTitle=セッション
+accountManagementTitle=Keycloakアカウント管理
+authenticatorTitle=オーセンティケーター
+applicationsHtmlTitle=アプリケーション
+linkedAccountsHtmlTitle=リンクされたアカウント
+
+accountManagementWelcomeMessage=Keycloakアカウント管理へようこそ
+personalInfoIntroMessage=基本情報を管理する
+accountSecurityTitle=アカウント・セキュリティー
+accountSecurityIntroMessage=パスワードとアカウント・アクセスを制御する
+applicationsIntroMessage=アカウントへアクセスするためにアプリのパーミッションを追跡して管理する
+resourceIntroMessage=チームメンバー間でリソースを共有する
+passwordLastUpdateMessage=パスワードは更新されました
+updatePasswordTitle=パスワードの更新
+updatePasswordMessageTitle=強力なパスワードを選択してください
+updatePasswordMessage=強力なパスワードは、数字、文字、記号を含みます。推測が難しく、実在する言葉に似ておらず、このアカウントだけで使用されています。
+personalSubTitle=個人情報
+personalSubMessage=この基本情報を管理してください:名、姓、メール
+
+authenticatorCode=ワンタイムコード
+email=Eメール
+firstName=名
+givenName=名
+fullName=氏名
+lastName=姓
+familyName=姓
+password=パスワード
+currentPassword=現在のパスワード
+passwordConfirm=新しいパスワード(確認)
+passwordNew=新しいパスワード
+username=ユーザー名
+address=住所
+street=番地
+locality=市区町村
+region=都道府県
+postal_code=郵便番号
+country=国
+emailVerified=確認済みEメール
+gssDelegationCredential=GSS委譲クレデンシャル
+
+profileScopeConsentText=ユーザー・プロファイル
+emailScopeConsentText=メールアドレス
+addressScopeConsentText=アドレス
+phoneScopeConsentText=電話番号
+offlineAccessScopeConsentText=オフライン・アクセス
+samlRoleListScopeConsentText=ロール
+rolesScopeConsentText=ユーザーロール
+
+role_admin=管理者
+role_realm-admin=レルム管理者
+role_create-realm=レルムの作成
+role_view-realm=レルムの参照
+role_view-users=ユーザーの参照
+role_view-applications=アプリケーションの参照
+role_view-clients=クライアントの参照
+role_view-events=イベントの参照
+role_view-identity-providers=アイデンティティー・プロバイダーの参照
+role_view-consent=同意の参照
+role_manage-realm=レルムの管理
+role_manage-users=ユーザーの管理
+role_manage-applications=アプリケーションの管理
+role_manage-identity-providers=アイデンティティー・プロバイダーの管理
+role_manage-clients=クライアントの管理
+role_manage-events=イベントの管理
+role_view-profile=プロファイルの参照
+role_manage-account=アカウントの管理
+role_manage-account-links=アカウントリンクの管理
+role_manage-consent=同意の管理
+role_read-token=トークンの参照
+role_offline-access=オフライン・アクセス
+role_uma_authorization=パーミッションの取得
+client_account=アカウント
+client_account-console=アカウント・コンソール
+client_security-admin-console=セキュリティー管理コンソール
+client_admin-cli=管理CLI
+client_realm-management=レルム管理
+client_broker=ブローカー
+
+
+requiredFields=必須
+allFieldsRequired=全ての入力項目が必須
+
+backToApplication=&laquo; アプリケーションに戻る
+backTo={0}に戻る
+
+date=日付
+event=イベント
+ip=IP
+client=クライアント
+clients=クライアント
+details=詳細
+started=開始
+lastAccess=最終アクセス
+expires=有効期限
+applications=アプリケーション
+
+account=アカウント
+federatedIdentity=連携済みアイデンティティー
+authenticator=オーセンティケーター
+device-activity=デバイス・アクティビティー
+sessions=セッション
+log=ログ
+
+application=アプリケーション
+availableRoles=利用可能なロール
+grantedPermissions=許可されたパーミッション
+grantedPersonalInfo=許可された個人情報
+additionalGrants=追加の許可
+action=アクション
+inResource=in
+fullAccess=フルアクセス
+offlineToken=オフライン・トークン
+revoke=許可の取り消し
+
+configureAuthenticators=設定済みのオーセンティケーター
+mobile=モバイル
+totpStep1=モバイルに以下のアプリケーションのいずれかをインストールしてください。
+totpStep2=アプリケーションを開き、バーコードをスキャンしてください。
+totpStep3=アプリケーションで提供されたワンタイムコードを入力して保存をクリックし、セットアップを完了してください。
+totpStep3DeviceName=OTPデバイスの管理に役立つようなデバイス名を指定してください。
+
+totpManualStep2=アプリケーションを開き、キーを入力してください。
+totpManualStep3=アプリケーションが設定できる場合は、次の設定値を使用してください。
+totpUnableToScan=スキャンできませんか?
+totpScanBarcode=バーコードをスキャンしますか?
+
+totp.totp=時間ベース
+totp.hotp=カウンターベース
+
+totpType=タイプ
+totpAlgorithm=アルゴリズム
+totpDigits=数字
+totpInterval=間隔
+totpCounter=カウンター
+totpDeviceName=デバイス名
+
+missingUsernameMessage=ユーザー名を入力してください。
+missingFirstNameMessage=名を入力してください。
+invalidEmailMessage=無効なメールアドレスです。
+missingLastNameMessage=姓を入力してください。
+missingEmailMessage=Eメールを入力してください。
+missingPasswordMessage=パスワードを入力してください。
+notMatchPasswordMessage=パスワードが一致していません。
+invalidUserMessage=無効なユーザーです。
+
+missingTotpMessage=オーセンティケーター・コードを入力してください。
+missingTotpDeviceNameMessage=デバイス名を指定してください。
+invalidPasswordExistingMessage=既存のパスワードが不正です。
+invalidPasswordConfirmMessage=新しいパスワード(確認)と一致していません。
+invalidTotpMessage=無効なオーセンティケーター・コードです。
+
+usernameExistsMessage=既に存在するユーザー名です。
+emailExistsMessage=既に存在するEメールです。
+
+readOnlyUserMessage=読み取り専用のため、アカウントを更新することはできません。
+readOnlyUsernameMessage=読み取り専用のため、ユーザー名を更新することはできません。
+readOnlyPasswordMessage=読み取り専用のため、パスワードを更新することはできません。
+
+successTotpMessage=モバイル・オーセンティケーターが設定されました。
+successTotpRemovedMessage=モバイル・オーセンティケーターが削除されました。
+
+successGrantRevokedMessage=許可が正常に取り消しされました。
+
+accountUpdatedMessage=アカウントが更新されました。
+accountPasswordUpdatedMessage=パスワードが更新されました。
+
+missingIdentityProviderMessage=アイデンティティー・プロバイダーが指定されていません。
+invalidFederatedIdentityActionMessage=無効または存在しないアクションです。
+identityProviderNotFoundMessage=指定されたアイデンティティー・プロバイダーが見つかりません。
+federatedIdentityLinkNotActiveMessage=このアイデンティティーは有効ではありません。
+federatedIdentityRemovingLastProviderMessage=パスワードがないため、最後の連携済みアイデンティティーが削除できません。
+identityProviderRedirectErrorMessage=アイデンティティー・プロバイダーへのリダイレクトに失敗しました。
+identityProviderRemovedMessage=アイデンティティー・プロバイダーが正常に削除されました。
+identityProviderAlreadyLinkedMessage={0}から返された連携済みアイデンティティーは既に他のユーザーに関連付けされています。
+staleCodeAccountMessage=有効期限切れです。再度お試しください。
+consentDenied=同意が拒否されました。
+
+accountDisabledMessage=アカウントが無効です。管理者に連絡してください。
+
+accountTemporarilyDisabledMessage=アカウントが一時的に無効です。管理者に連絡するか、しばらく時間をおいてから再度お試しください。
+invalidPasswordMinLengthMessage=無効なパスワード: 最小{0}の長さが必要です。
+invalidPasswordMinLowerCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の小文字を含む必要があります。
+invalidPasswordMinDigitsMessage=無効なパスワード: 少なくとも{0}文字の数字を含む必要があります。
+invalidPasswordMinUpperCaseCharsMessage=無効なパスワード:少なくとも{0}文字の大文字を含む必要があります。
+invalidPasswordMinSpecialCharsMessage=無効なパスワード: 少なくとも{0}文字の特殊文字を含む必要があります。
+invalidPasswordNotUsernameMessage=無効なパスワード: ユーザー名と同じパスワードは禁止されています。
+invalidPasswordRegexPatternMessage=無効なパスワード: 正規表現パターンと一致しません。
+invalidPasswordHistoryMessage=無効なパスワード: 最近の{0}パスワードのいずれかと同じパスワードは禁止されています。
+invalidPasswordBlacklistedMessage=無効なパスワード: パスワードがブラックリストに含まれています。
+invalidPasswordGenericMessage=無効なパスワード: 新しいパスワードはパスワード・ポリシーと一致しません。
+
+# Authorization
+myResources=マイリソース
+myResourcesSub=マイリソース
+doDeny=拒否
+doRevoke=取り消し
+doApprove=承認
+doRemoveSharing=共有の削除
+doRemoveRequest=要求の削除
+peopleAccessResource=このリソースにアクセスできる人
+resourceManagedPolicies=このリソースへのアクセスを許可するパーミッション
+resourceNoPermissionsGrantingAccess=このリソースへのアクセスを許可する権限はありません
+anyAction=任意のアクション
+description=説明
+name=名前
+scopes=スコープ
+resource=リソース
+user=ユーザー
+peopleSharingThisResource=このリソースを共有している人
+shareWithOthers=他人と共有
+needMyApproval=承認が必要
+requestsWaitingApproval=承認待ちの要求
+icon=アイコン
+requestor=要求者
+owner=オーナー
+resourcesSharedWithMe=共有しているリソース
+permissionRequestion=パーミッションの要求
+permission=パーミッション
+shares=共有(複数)
+notBeingShared=このリソースは共有されていません。
+notHaveAnyResource=リソースがありません。
+noResourcesSharedWithYou=共有しているリソースはありません
+havePermissionRequestsWaitingForApproval=承認を待っている{0}個のパーミッションの要求があります。
+clickHereForDetails=詳細はこちらをクリックしてください。
+resourceIsNotBeingShared=リソースは共有されていません。
+
+# Applications
+applicationName=名前
+applicationType=アプリケーション・タイプ
+applicationInUse=使用中のアプリケーションのみ
+clearAllFilter=すべてのフィルターをクリア
+activeFilters=アクティブなフィルター
+filterByName=名前でフィルタリング...
+allApps=すべてのアプリケーション
+internalApps=内部アプリケーション
+thirdpartyApps=サードパーティーのアプリケーション
+appResults=結果
+clientNotFoundMessage=クライアントが見つかりません。
+
+# Linked account
+authorizedProvider=認可済みプロバイダー
+authorizedProviderMessage=アカウントにリンクされた認可済みプロバイダー
+identityProvider=アイデンティティー・プロバイダー
+identityProviderMessage=アカウントと設定したアイデンティティー・プロバイダーをリンクするには
+socialLogin=ソーシャル・ログイン
+userDefined=ユーザー定義
+removeAccess=アクセス権の削除
+removeAccessMessage=このアプリ・アカウントを使用する場合は、アクセス権を再度付与する必要があります。
+
+#Authenticator
+authenticatorStatusMessage=2要素認証は現在
+authenticatorFinishSetUpTitle=あなたの2要素認証
+authenticatorFinishSetUpMessage=Keycloakアカウントにサインインするたびに、2要素認証コードを入力するように求められます。
+authenticatorSubTitle=2要素認証を設定する
+authenticatorSubMessage=アカウントのセキュリティーを強化するには、利用可能な2要素認証の方式のうち少なくとも1つを有効にします。
+authenticatorMobileTitle=モバイル・オーセンティケーター
+authenticatorMobileMessage=モバイル・オーセンティケーターを使用して、2要素認証として確認コードを取得します。
+authenticatorMobileFinishSetUpMessage=オーセンティケーターはあなたの携帯電話にバインドされています。
+authenticatorActionSetup=セットアップ
+authenticatorSMSTitle=SMSコード
+authenticatorSMSMessage=Keycloakは、2要素認証として確認コードを携帯電話に送信します。
+authenticatorSMSFinishSetUpMessage=テキスト・メッセージが次の電話番号宛に送信されます:
+authenticatorDefaultStatus=デフォルト
+authenticatorChangePhone=電話番号の変更
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=モバイル・オーセンティケーターのセットアップ
+smscodeIntroMessage=電話番号を入力すると、確認コードがあなたの電話に送信されます。
+mobileSetupStep1=携帯電話にオーセンティケーター・アプリケーションをインストールします。ここにリストされているアプリケーションがサポートされています。
+mobileSetupStep2=アプリケーションを開き、バーコードをスキャンしてください。
+mobileSetupStep3=アプリケーションから提供されたワンタイムコードを入力し、保存をクリックしてセットアップを終了します。
+scanBarCode=バーコードをスキャンしますか?
+enterBarCode=ワンタイムコードを入力してください
+doCopy=コピー
+doFinish=終了
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMSコードのセットアップ
+chooseYourCountry=国を選んでください
+enterYourPhoneNumber=電話番号を入力してください
+sendVerficationCode=確認コードの送信
+enterYourVerficationCode=確認コードを入力してください
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=バックアップ・コードのセットアップ
+realmName=レルム
+doDownload=ダウンロード
+doPrint=印刷
+generateNewBackupCodes=新しいバックアップ・コードを生成する
+backtoAuthenticatorPage=オーセンティケーター・ページに戻る
+
+
+#Resources
+resources=リソース
+sharedwithMe=私と共有
+share=共有
+sharedwith=共有
+accessPermissions=アクセス・パーミッション
+permissionRequests=パーミッションの要求
+approve=承認
+approveAll=すべて承認
+people=人
+perPage=1ページあたり
+currentPage=現在のページ
+sharetheResource=リソースの共有
+group=グループ
+selectPermission=パーミッションを選択
+addPeople=あなたのリソースを共有する人を追加
+addTeam=あなたのリソースを共有するチームを追加
+myPermissions=私のパーミッション
+waitingforApproval=承認待ち
+anyPermission=任意のパーミッション
+
+# Openshift messages
+openshift.scope.user_info=ユーザー情報
+openshift.scope.user_check-access=ユーザーアクセス情報
+openshift.scope.user_full=フルアクセス
+openshift.scope.list-projects=プロジェクトの一覧表示
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_lt.properties b/themes/custom-theme-template/account/messages/messages_lt.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2732d37c13b22c8748b65895393698c92c5d01bd
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_lt.properties
@@ -0,0 +1,155 @@
+doSave=Saugoti
+doCancel=Atšaukti
+
+doLogOutAllSessions=Atjungti visas sesijas
+doRemove=Šalinti
+doAdd=Pridėti
+doSignOut=Atsijungti
+
+editAccountHtmlTitle=Redaguoti paskyrą
+federatedIdentitiesHtmlTitle=Susietos paskyros
+accountLogHtmlTitle=Paskyros žurnalas
+changePasswordHtmlTitle=Keisti slaptažodį
+sessionsHtmlTitle=Prisijungimo sesijos
+accountManagementTitle=Keycloak Naudotojų Administravimas
+authenticatorTitle=Autentifikatorius
+applicationsHtmlTitle=Programos
+
+authenticatorCode=Vienkartinis kodas
+email=El. paštas
+firstName=Vardas
+givenName=Pavardė
+fullName=Pilnas vardas
+lastName=Pavardė
+familyName=Pavardė
+password=Slaptažodis
+passwordConfirm=Pakartotas slaptažodis
+passwordNew=Naujas slaptažodis
+username=Naudotojo vardas
+address=Adresas
+street=Gatvė
+locality=Miestas arba vietovė
+region=Rajonas
+postal_code=Pašto kodas
+country=Šalis
+emailVerified=El. pašto adresas patvirtintas
+gssDelegationCredential=GSS prisijungimo duomenų delegavimas
+
+role_admin=Administratorius
+role_realm-admin=Srities administravimas
+role_create-realm=Kurti sritį
+role_view-realm=Peržiūrėti sritį
+role_view-users=Peržiūrėti naudotojus
+role_view-applications=Peržiūrėti programas
+role_view-clients=Peržiūrėti klientines programas
+role_view-events=Peržiūrėti įvykių žurnalą
+role_view-identity-providers=Peržiūrėti tapatybės teikėjus
+role_manage-realm=Valdyti sritis
+role_manage-users=Valdyti naudotojus
+role_manage-applications=Valdyti programas
+role_manage-identity-providers=Valdyti tapatybės teikėjus
+role_manage-clients=Valdyti programas
+role_manage-events=Valdyti įvykius
+role_view-profile=Peržiūrėti paskyrą
+role_manage-account=Valdyti paskyrą
+role_read-token=Skaityti prieigos rakšą
+role_offline-access=Darbas neprisijungus
+role_uma_authorization=Įgauti UMA autorizavimo teises
+client_account=Paskyra
+client_security-admin-console=Saugumo administravimo konsolė
+client_admin-cli=Administravimo CLI
+client_realm-management=Srities valdymas
+client_broker=Tarpininkas
+
+
+requiredFields=Privalomi laukai
+allFieldsRequired=Visi laukai yra privalomi
+
+backToApplication=&laquo; Grįžti į programą
+backTo=Atgal į {0}
+
+date=Data
+event=Įvykis
+ip=IP
+client=Klientas
+clients=Klientai
+details=Detaliau
+started=Sukūrimo laikas
+lastAccess=Vėliausia prieiga
+expires=Galioja iki
+applications=Programos
+
+account=Paskyra
+federatedIdentity=Susieta tapatybė
+authenticator=Autentifikatorius
+sessions=Sesijos
+log=Įvykiai
+
+application=Programa
+availablePermissions=Galimos teisės
+grantedPermissions=Įgalintos teisės
+grantedPersonalInfo=Įgalinta asmeninė informacija
+additionalGrants=Papildomi įgaliojimai
+action=Veiksmas
+inResource=yra
+fullAccess=Pilna prieiga
+offlineToken=Režimo neprisijungus raktas (token)
+revoke=Atšaukti įgaliojimą
+
+configureAuthenticators=Sukonfigūruotas autentifikatorius
+mobile=Mobilus
+totpStep1=Įdiekite <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> arba Google Authenticator savo įrenginyje. Programėlės prieinamos <a href="https://play.google.com">Google Play</a> ir Apple App Store.
+totpStep2=Atidarykite programėlę ir nuskenuokite barkodą arba įveskite kodą.
+totpStep3=Įveskite programėlėje sugeneruotą vieną kartą galiojantį kodą ir paspauskite Saugoti norėdami prisijungti.
+
+missingUsernameMessage=Prašome įvesti naudotojo vardą.
+missingFirstNameMessage=Prašome įvesti vardą.
+invalidEmailMessage=Neteisingas el. pašto adresas.
+missingLastNameMessage=Prašome įvesti pavardę.
+missingEmailMessage=Prašome įvesti el. pašto adresą.
+missingPasswordMessage=Prašome įvesti slaptažodį.
+notMatchPasswordMessage=Slaptažodžiai nesutampa.
+
+missingTotpMessage=Prašome įvesti autentifikacijos kodą.
+invalidPasswordExistingMessage=Neteisingas dabartinis slaptažodis.
+invalidPasswordConfirmMessage=Pakartotas slaptažodis nesutampa.
+invalidTotpMessage=Neteisingas autentifikacijos kodas.
+
+usernameExistsMessage=Toks naudotojas jau egzistuoja.
+emailExistsMessage=El. pašto adresas jau egzistuoja.
+
+readOnlyUserMessage=Tik skaitymui sukonfigūruotos paskyros duomenų atnaujinti neleidžiama.
+readOnlyPasswordMessage=Tik skaitymui sukonfigūruotos paskyros slaptažodžio atnaujinti neleidžiama.
+
+successTotpMessage=Mobilus autentifikatorius sukonfigūruotas.
+successTotpRemovedMessage=Mobilus autentifikatorius pašalintas.
+
+successGrantRevokedMessage=Įgalinimas pašalintas sėkmingai.
+
+accountUpdatedMessage=Jūsų paskyros duomenys sėkmingai atnaujinti.
+accountPasswordUpdatedMessage=Jūsų paskyros slaptažodis pakeistas.
+
+missingIdentityProviderMessage=Nenurodytas tapatybės teikėjas.
+invalidFederatedIdentityActionMessage=Neteisingas arba nežinomas veiksmas.
+identityProviderNotFoundMessage=Nurodytas tapatybės teikėjas nerastas.
+federatedIdentityLinkNotActiveMessage=Nurodyta susieta tapatybė neaktyvi.
+federatedIdentityRemovingLastProviderMessage=Jūs negalite pašalinti paskutinio tapatybės teikėjo sąsajos, nes Jūs neturite nusistatę paskyros slaptažodžio.
+identityProviderRedirectErrorMessage=Klaida nukreipiant į tapatybės teikėjo puslapį.
+identityProviderRemovedMessage=Tapatybės teikėjas sėkmingai pašalintas.
+identityProviderAlreadyLinkedMessage=Susieta tapatybė iš {0} jau susieta su kita paskyra.
+staleCodeAccountMessage=Puslapio galiojimas baigėsi. Bandykite dar kartą.
+consentDenied=Prieiga draudžiama.
+
+accountDisabledMessage=Paskyros galiojimas sustabdytas, kreipkitės į administratorių.
+
+accountTemporarilyDisabledMessage=Paskyros galiojimas laikinai sustabdytas. Kreipkitės į administratorių arba pabandykite vėliau.
+invalidPasswordMinLengthMessage=Per trumpas slaptažodis: mažiausias ilgis {0}.
+invalidPasswordMinLowerCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} mažąją raidę.
+invalidPasswordMinDigitsMessage=Neteisingas slaptažodis: privaloma įvesti {0} skaitmenį.
+invalidPasswordMinUpperCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} didžiąją raidę.
+invalidPasswordMinSpecialCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.
+invalidPasswordNotUsernameMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.
+invalidPasswordRegexPatternMessage=Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).
+invalidPasswordHistoryMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_lv.properties b/themes/custom-theme-template/account/messages/messages_lv.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1603d3ec714d214a70e6bdbe4dff70e73bc1e65d
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_lv.properties
@@ -0,0 +1,197 @@
+doSave=Saglabāt
+doCancel=Atcelt
+doLogOutAllSessions=Izlogoties no visām sesijām
+doRemove=Noņemt
+doAdd=Pievienot
+doSignOut=Atslēgties
+doLogIn=Pieslēgties
+doLink=Savienot
+
+
+editAccountHtmlTitle=Rediģēt kontu
+personalInfoHtmlTitle=Personiskā informācija
+federatedIdentitiesHtmlTitle=Federatīvās identitātes
+accountLogHtmlTitle=Konta žurnāls
+changePasswordHtmlTitle=Mainīt paroli
+deviceActivityHtmlTitle=Ierīces aktivitāte
+sessionsHtmlTitle=Sesijas
+accountManagementTitle=Keycloak konta pārvaldība
+authenticatorTitle=Autentifikators
+applicationsHtmlTitle=Lietojumprogrammas
+linkedAccountsHtmlTitle=Savienotie konti
+
+accountManagementWelcomeMessage=Laipni lūgti Keycloak konta pārvaldniekā
+personalInfoIntroMessage=Pārvaldīt pamatinformāciju
+accountSecurityTitle=Konta drošība
+accountSecurityIntroMessage=Pārvaldi savu paroli un konta pieeju
+applicationsIntroMessage=Uzraugi un pārvaldi lietojumprogrammas pieeju savam kontam
+resourceIntroMessage=
+passwordLastUpdateMessage=Tava parole tika atjaunota 
+updatePasswordTitle=Atjaunot paroli
+updatePasswordMessageTitle=Izvēlies drošu parolu
+updatePasswordMessage=Droša parole satur ciparus, burtus un simbolus. To ir grūti uzminēt, tā nesatur reālus vārdus un tiek izmantota tikai šim kontam.
+personalSubTitle=Tava personīgā informācija
+personalSubMessage=Pārvaldi savu pamatinformāciju: vārdu, uzvārdu un e-pastu
+
+authenticatorCode=Vienreizējā parole
+email=E-pasts
+firstName=Vārds
+givenName=Vārds
+fullName=Pilns vārds
+lastName=Uzvārds
+familyName=Uzvārds
+password=Parole
+currentPassword=Pašreizējā parole
+passwordConfirm=Parole atkārtoti
+passwordNew=Jauna parole
+username=Lietotājvārds
+address=Adrese
+street=Iela
+locality=Pilsēta
+region=Novads vai reģions
+postal_code=Pasta indegs
+country=Valsts
+emailVerified=E-pasts apstiprināts
+gssDelegationCredential=GSS delegācijas atslēga
+
+profileScopeConsentText=Lietotāja profils
+emailScopeConsentText=E-pasta adrese
+addressScopeConsentText=Adrese
+phoneScopeConsentText=Tālrunis
+offlineAccessScopeConsentText=Bezsaustes piekļuve
+samlRoleListScopeConsentText=Manas lomas
+rolesScopeConsentText=Lietotāju lomas
+
+role_admin=Administrators
+role_realm-admin=Realm administrators
+role_create-realm=Izveidot realm
+role_view-realm=Skatīt realm
+role_view-users=Skatīt lietoājus
+role_view-applications=Skatīt lietojumprogrammas
+role_view-clients=Skatīt klientus
+role_view-events=Skatīt notikumus
+role_view-identity-providers=Skatīt identitātes sniedzējus
+role_manage-realm=Pārvaldīt realm
+role_manage-users=Pārvaldīt lietotājus
+role_manage-applications=Pārvaldīt lietojumprogrammas
+role_manage-identity-providers=Pārvaldīt identitātes sniedzējus
+role_manage-clients=Pārvaldīt klientus
+role_manage-events=Pārvaldīt notikumus
+role_view-profile=Skatīt profilu
+role_manage-account=Pārvaldīt kontu
+role_manage-account-links=Pārvaldīt konta saites
+role_read-token=Lasīt talonu (token)
+role_offline-access=Bezsaistes piekļuve
+role_uma_authorization=Iegūt atļaujas
+client_account=Konts
+client_security-admin-console=Drošības administrācijas konsole
+client_admin-cli=Administrācijas CLI
+client_realm-management=Realm pārvaldība
+client_broker=Brokeris
+
+
+requiredFields=Obligātie lauki
+allFieldsRequired=Visi lauki ir obligāti
+
+backToApplication=&laquo; Atpakaļ uz lietojumprogrammu
+backTo=Atpakaļ uz {0}
+
+date=Datums
+event=Notikums
+ip=IP
+client=Klients
+clients=Klienti
+details=Detaļas
+started=Uzsākta
+lastAccess=Pēdējā piekļuve
+expires=Beidzas
+applications=Lietojumprogrammas
+
+account=Konts
+federatedIdentity=Federatīvā identitāte
+authenticator=Autentifikators
+device-activity=Ierīces aktivitāte
+sessions=Sesijas
+log=Žurnāls
+
+application=Lietojumprogramma
+availableRoles=Pieejamās lomas
+grantedPermissions=Piešķirtās atļaujas
+grantedPersonalInfo=Pieškirtā personālā informācija
+additionalGrants=Papildus atļaujas
+action=Darbība
+inResource=iekš
+fullAccess=Pilna piekļuve
+offlineToken=Bezsaistes talons (token)
+revoke=Atsaukt atļauju
+
+missingUsernameMessage=Lūdzu norādi lietotājvārdu.
+missingFirstNameMessage=Lūdzu norādi vārdu.
+invalidEmailMessage=Nekorekta e-pasta adrese.
+missingLastNameMessage=Lūdzu norādi uzvārdu.
+missingEmailMessage=Lūdzu norādi e-pastu.
+missingPasswordMessage=Lūdzu norādi paroli.
+notMatchPasswordMessage=Paroles nesakrīt.
+invalidUserMessage=Nekorekts lietotājs
+
+usernameExistsMessage=Lietotājvārds jau eksistē.
+emailExistsMessage=E-pasts jau eksistē.
+
+# Authorization
+myResources=Mani resursi
+myResourcesSub=Mani resursi
+doDeny=Aizliegt
+doRevoke=Atsaukt
+doApprove=Apstiprināt
+doRemoveSharing=Noņemt dalīšanos
+doRemoveRequest=Noņemt pieprasījumu
+peopleAccessResource=Cilvēki ar pieeju šim resursam
+resourceManagedPolicies=Atļaujas šim resursam
+resourceNoPermissionsGrantingAccess=Nav atļauju šim resursam
+anyAction=Jebkura darbība
+description=Apraksts
+name=Nosaukums
+scopes=Jomas (scopes)
+resource=Resurss
+user=Lietotājs
+peopleSharingThisResource=Cilveki, kas dalās ar šo resursu
+shareWithOthers=Dalīties ar citiem
+needMyApproval=Nepieciešams mans apstiprinājums
+requestsWaitingApproval=Tavi pieprasījumi, kas gaida apstiprinājumu
+icon=Ikona
+requestor=Pieprasītājs
+owner=Īpašnieks
+resourcesSharedWithMe=Resursi, kuri tiek dalīti ar mani
+permissionRequestion=Atļaujas pieprasījums
+permission=Atļauja
+shares=share(s)
+
+locale_ca=Català
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fr=Français
+locale_it=Italian
+locale_ja=日本語
+locale_nl=Nederlands
+locale_no=Norsk
+locale_lt=Lietuvių
+locale_lt=Latviešu
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_zh-CN=中文简体
+
+# Applications
+applicationName=Nosaukums
+applicationType=Lietojumprogrammas tips
+applicationInUse=Tikai aktīvās lietojumprogrammas
+clearAllFilter=Noņemt visus filtrus
+activeFilters=Aktīvie filtri
+filterByName=Filtrēt pēc nosaukuma ...
+allApps=Visas lietojumprogrammas
+internalApps=Iekšējās lietojumprogrammas
+thirdpartyApps=Trešās puses lietojumprogrammas
+appResults=Rezultāti
diff --git a/themes/custom-theme-template/account/messages/messages_nl.properties b/themes/custom-theme-template/account/messages/messages_nl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4e3d959f07a997147cb782981b4ecc42f1894cb7
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_nl.properties
@@ -0,0 +1,373 @@
+doSave=Opslaan
+doCancel=Annuleer
+doLogOutAllSessions=Alle sessies uitloggen
+doRemove=Verwijder
+doAdd=Voeg toe
+doSignOut=Afmelden
+doLogIn=Inloggen
+doLink=Link
+noAccessMessage=Geen toegang
+
+personalInfoSidebarTitle=Persoonsgegevens
+accountSecuritySidebarTitle=Account beveiliging
+signingInSidebarTitle=Inloggen
+deviceActivitySidebarTitle=Apparaat activiteit
+linkedAccountsSidebarTitle=Gelinkte accounts
+
+editAccountHtmlTitle=Bewerk account
+federatedIdentitiesHtmlTitle=Federated Identities
+accountLogHtmlTitle=Account log
+changePasswordHtmlTitle=Verander wachtwoord
+sessionsHtmlTitle=Sessies
+accountManagementTitle=Keycloak Accountbeheer
+authenticatorTitle=Authenticator
+applicationsHtmlTitle=Toepassingen
+
+accountManagementWelcomeMessage=Welkom bij Keycloak Account Management
+personalInfoIntroMessage=Beheer uw basisgegevens
+accountSecurityTitle=Account Beveiliging
+accountSecurityIntroMessage=Beheer uw wachtwoord en account toegang
+applicationsIntroMessage=Volg en beheer uw app-toestemming voor toegang tot uw account
+resourceIntroMessage=Deel uw bronnen met uw team
+passwordLastUpdateMessage=Uw wachtwoord was veranderd op
+updatePasswordTitle=Wachtwoord Bijwerken
+updatePasswordMessageTitle=Zorg ervoor dat u een sterk wachtwoord kiest
+updatePasswordMessage=Een sterk wachtwoord bevat een mix van nummers, letters, en symbolen. Het is moeilijk te gokken, lijkt niet op een echt woord, en wordt alleen gebruikt voor dit account.
+personalSubTitle=Uw persoonlijke informatie
+personalSubMessage=Beheer uw basisgegevens.
+
+authenticatorCode=Eenmalige code
+email=E-mailadres
+firstName=Voornaam
+givenName=Voornaam
+fullName=Volledige naam
+lastName=Achternaam
+familyName=Achternaam
+password=Wachtwoord
+passwordConfirm=Bevestiging
+passwordNew=Nieuw Wachtwoord
+username=Gebruikersnaam
+address=Adres
+street=Straat
+locality=Stad of plaats
+region=Staat, provincie of regio
+postal_code=Postcode
+country=Land
+emailVerified=E-mailadres geverifieerd
+website=Website
+phoneNumber=Telefoonnummer
+phoneNumberVerified=Geverifieerd telefoonnummer
+gender=Geslacht
+birthday=Geboortedatum
+zoneinfo=Tijdzone
+gssDelegationCredential=GSS gedelegeerde aanmeldgegevens
+
+profileScopeConsentText=Gebruiker profiel
+emailScopeConsentText=E-mailadres
+addressScopeConsentText=Adres
+phoneScopeConsentText=Telefoonnummer
+offlineAccessScopeConsentText=Offline Toegang
+samlRoleListScopeConsentText=Mijn Rollen
+rolesScopeConsentText=Gebruikersrollen
+
+role_admin=Beheer
+role_realm-admin=Realmbeheer
+role_create-realm=Creëer realm
+role_view-realm=Bekijk realm
+role_view-users=Bekijk gebruikers
+role_view-applications=Bekijk toepassingen
+role_view-groups=Bekijk groepen
+role_view-clients=Bekijk clients
+role_view-events=Bekijk gebeurtenissen
+role_view-identity-providers=Bekijk identity providers
+role_view-consent=Bekijk toestemmingen
+role_manage-realm=Beheer realm
+role_manage-users=Beheer gebruikers
+role_manage-applications=Beheer toepassingen
+role_manage-identity-providers=Beheer identity providers
+role_manage-clients=Beheer clients
+role_manage-events=Beheer gebeurtenissen
+role_view-profile=Bekijk profiel
+role_manage-account=Beheer account
+role_manage-account-links=Beheer accountkoppelingen
+role_manage-consent=Beheer toestemmingen
+role_read-token=Lees token
+role_offline-access=Offline toegang
+role_uma_authorization=Verkrijg UMA rechten
+client_account=Account
+client_account-console=Account Console
+client_security-admin-console=Console Veiligheidsbeheer
+client_admin-cli=Beheer CLI
+client_realm-management=Realmbeheer
+client_broker=Broker
+
+requiredFields=Verplichte velden
+allFieldsRequired=Alle velden verplicht
+
+backToApplication=&laquo; Terug naar Applicatie
+backTo=Terug naar {0}
+
+date=Datum
+event=Gebeurtenis
+ip=IP
+client=Client
+clients=Clients
+details=Details
+started=Gestart
+lastAccess=Laatste toegang
+expires=Vervalt
+applications=Applicaties
+
+account=Account
+federatedIdentity=Federated Identity
+authenticator=Authenticator
+sessions=Sessies
+log=Log
+
+application=Applicatie
+availablePermissions=Beschikbare rechten
+grantedPermissions=Gegunde rechten
+grantedPersonalInfo=Gegunde Persoonsgegevens
+additionalGrants=Verdere vergunningen
+action=Actie
+inResource=in
+fullAccess=Volledige toegang
+offlineToken=Offline Token
+revoke=Vergunning intrekken
+
+configureAuthenticators=Ingestelde authenticators
+mobile=Mobiel nummer
+totpStep1=Installeer een van de onderstaande applicaties op uw mobiele apparaat:
+totpStep2=Open de toepassing en scan de QR-code of voer de sleutel in.
+totpStep3=Voer de door de toepassing gegeven eenmalige code in en klik op Opslaan om de configuratie af te ronden.
+totpStep3DeviceName=Geef een apparaatnaam op om uw OTP-apparaten te identificeren.
+
+totpManualStep2=Open de applicatie en voer de sleutel in:
+totpManualStep3=Gebruik de volgende configuratie waardes als de applicatie ze ondersteund:
+totpUnableToScan=Kunt u niet scannen?
+totpScanBarcode=Scan de barcode?
+
+totp.totp=Tijdgebaseerd
+totp.hotp=Tellergebaseerd
+
+totpType=Type
+totpAlgorithm=Algoritme
+totpDigits=Cijfers
+totpInterval=Interval
+totpCounter=Teller
+totpDeviceName=Apparaatnaam
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+
+irreversibleAction=Deze actie is onomkeerbaar
+deletingImplies=Het verwijderen van uw account houdt het volgende in:
+errasingData=Al uw gegevens wissen
+loggingOutImmediately=Meteen uitloggen
+accountUnusable=Dit account kan niet meer gebruikt worden voor gebruik in de applicatie
+
+missingUsernameMessage=Gebruikersnaam ontbreekt.
+missingFirstNameMessage=Voornaam onbreekt.
+invalidEmailMessage=Ongeldig e-mailadres.
+missingLastNameMessage=Achternaam ontbreekt.
+missingEmailMessage=E-mailadres ontbreekt.
+missingPasswordMessage=Wachtwoord ontbreekt.
+notMatchPasswordMessage=Wachtwoorden komen niet overeen.
+invalidUserMessage=Ongeldige gebruiker
+updateReadOnlyAttributesRejectedMessage=Update van alleen-lezen kenmerk afgewezen
+
+missingTotpMessage=Authenticatiecode ontbreekt.
+missingTotpDeviceNameMessage=Geef een apparaatnaam op.
+invalidPasswordExistingMessage=Ongeldig bestaand wachtwoord.
+invalidPasswordConfirmMessage=Wachtwoordbevestiging komt niet overeen.
+invalidTotpMessage=Ongeldige authenticatiecode.
+
+usernameExistsMessage=Gebruikersnaam bestaat reeds.
+emailExistsMessage=E-mailadres bestaat reeds.
+
+readOnlyUserMessage=U kunt uw account niet bijwerken aangezien het account alleen-lezen is.
+readOnlyUsernameMessage=U kunt uw gebruikersnaam niet wijzigen omdat uw account alleen-lezen is.
+readOnlyPasswordMessage=U kunt uw wachtwoord niet wijzigen omdat uw account alleen-lezen is.
+
+successTotpMessage=Mobiele authenticator geconfigureerd.
+successTotpRemovedMessage=Mobiele authenticator verwijderd.
+
+successGrantRevokedMessage=Vergunning succesvol ingetrokken
+
+accountUpdatedMessage=Uw account is gewijzigd.
+accountPasswordUpdatedMessage=Uw wachtwoord is gewijzigd.
+
+missingIdentityProviderMessage=Geen identity provider aangegeven.
+invalidFederatedIdentityActionMessage=Ongeldige of ontbrekende actie op federated identity.
+identityProviderNotFoundMessage=Gespecificeerde identity provider niet gevonden.
+federatedIdentityLinkNotActiveMessage=Deze federated identity is niet langer geldig.
+federatedIdentityRemovingLastProviderMessage=U kunt de laatste federated identity provider niet verwijderen aangezien u dan niet langer zou kunnen inloggen.
+identityProviderRedirectErrorMessage=Kon niet herverwijzen naar identity provider.
+identityProviderRemovedMessage=Identity provider met succes verwijderd.
+identityProviderAlreadyLinkedMessage=Door {0} teruggegeven federated identity is al gekoppeld aan een andere gebruiker.
+staleCodeAccountMessage=De pagina is verlopen. Probeer het nogmaals.
+consentDenied=Toestemming geweigerd
+
+accountDisabledMessage=Account is gedeactiveerd. Contacteer de beheerder.
+
+accountTemporarilyDisabledMessage=Account is tijdelijk deactiveerd, neem contact op met de beheerder of probeer het later opnieuw.
+invalidPasswordMinLengthMessage=Ongeldig wachtwoord: de minimale lengte is {0} karakters.
+invalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} kleine letters bevatten.
+invalidPasswordMinDigitsMessage=Ongeldig wachtwoord: het moet minstens {0} getallen bevatten.
+invalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} hoofdletters bevatten.
+invalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord: het moet minstens {0} speciale karakters bevatten.
+invalidPasswordNotUsernameMessage=Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.
+invalidPasswordRegexPatternMessage=Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.
+invalidPasswordHistoryMessage=Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.
+invalidPasswordGenericMessage=Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid.
+
+# Authorization
+myResources=Mijn Bronnen
+myResourcesSub=Mijn bronnen
+doDeny=Afwijzen
+doRevoke=Intrekken
+doApprove=Goedkeuren
+doRemoveSharing=Niet meer delen
+doRemoveRequest=Aanvraag verwijderen
+peopleAccessResource=Personen met toegang tot deze bron
+resourceManagedPolicies=Rechten die toegang verlenen tot deze bron
+resourceNoPermissionsGrantingAccess=Er zijn geen rechten verleend die toegang verlenen tot deze bron
+anyAction=Elke actie
+description=Beschrijving
+name=Naam
+scopes=Bereik
+resource=Bron
+user=Gebruiker
+peopleSharingThisResource=Personen die deze bron delen
+shareWithOthers=Met anderen delen
+needMyApproval=Heeft mijn goedkeuring nodig
+requestsWaitingApproval=Uw aanvragen wachten op goedkeuring
+icon=Icon
+requestor=Aanvrager
+owner=Eigenaar
+resourcesSharedWithMe=Bronnen die met mij gedeeld zijn
+permissionRequestion=Toestemmingsverzoek
+permission=Toestemming
+shares=aandelen
+notBeingShared=Deze bron wordt niet gedeeld.
+notHaveAnyResource=U heeft geen bronnen
+noResourcesSharedWithYou=Er zijn geen bronnen met u gedeeld
+havePermissionRequestsWaitingForApproval=U heeft {0} toestemmingsverzoeken die wachten op goedkeuring.
+clickHereForDetails=Klik hier voor details.
+resourceIsNotBeingShared=Deze bron wordt niet gedeeld
+
+# # Applications
+applicationName=Applicatienaam
+applicationType=Applicatietype
+applicationInUse=Alleen apps die in gebruik zijn
+clearAllFilter=Alle filters leegmaken
+activeFilters=Actieve filters
+filterByName=Filter op Naam ...
+allApps=Alle applicaties
+internalApps=Interne applicaties
+thirdpartyApps=Derde partij applicaties
+appResults=Resultaten
+clientNotFoundMessage=Client niet gevonden.
+
+# Linked account
+authorizedProvider=Geautoriseerde Provider
+authorizedProviderMessage=Geautoriseerde providers gekoppeld aan uw account
+identityProvider=Identiteitsprovider
+identityProviderMessage=Om uw account te koppelen aan de identiteitsproviders die u heeft ingesteld
+socialLogin=Social Login
+userDefined=Gebruiker gedefinieerde
+removeAccess=Toegang intrekken
+removeAccessMessage=U moet opnieuw toegang verlenen als u dit app-account wilt gebruiken.
+
+#Authenticator
+authenticatorStatusMessage=Tweefactorauthenticatie is momenteel
+authenticatorFinishSetUpTitle=Uw tweefactorauthenticatie
+authenticatorFinishSetUpMessage=Elke keer wanneer u zich aanmeldt bij uw Keycloak-account, wordt u gevraagd om een tweefactorauthenticatiecode op te geven.
+authenticatorSubTitle=Stel tweefactorauthenticatie in
+authenticatorSubMessage=Schakel ten minste één van de beschikbare methoden voor tweefactorauthenticatie in om de beveiliging van uw account te verbeteren.
+authenticatorMobileTitle=Mobiele authenticator
+authenticatorMobileMessage=Gebruik mobiele authenticator om verificatiecodes te krijgen als tweefactorauthenticatie.
+authenticatorMobileFinishSetUpMessage=De authenticator is verbonden aan uw telefoon.
+authenticatorActionSetup=Instellen
+authenticatorSMSTitle=SMS Code
+authenticatorSMSMessage=Keycloak stuurt de verificatiecode naar uw telefoon als tweefactorauthenticatie.
+authenticatorSMSFinishSetUpMessage=Tekstberichten worden verstuurd naar
+authenticatorDefaultStatus=Standaard
+authenticatorChangePhone=Telefoonnummer wijzigen
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobiele authenticator instellen
+smscodeIntroMessage=Voer uw telefoonnummer in en er wordt een verificatiecode naar uw telefoon verzonden.
+mobileSetupStep1=Installeer een authenticator-app op uw telefoon. De hier vermelde apps worden ondersteund.
+mobileSetupStep2=Open de applicatie en scan de barcode:
+mobileSetupStep3=Voer de eenmalige code in die door de app wordt verstrekt en klik op Opslaan om de installatie te voltooien.
+scanBarCode=Wilt u de barcode scannen?
+enterBarCode=Vul de eenmalige code in
+doCopy=Kopiëren
+doFinish=Afronden
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS Code instellen
+chooseYourCountry=Kies uw land
+enterYourPhoneNumber=Voer uw telefoonnummer in
+sendVerficationCode=Verificatiecode versturen
+enterYourVerficationCode=Voer uw verificatiecode in
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Herstelverificatiecodes instellen
+realmName=Realm
+doDownload=Downloaden
+doPrint=Printen
+generateNewBackupCodes=Genereer nieuwe herstelverificatiecodes
+backtoAuthenticatorPage=Terug naar de Authenticator pagina
+
+
+#Resources
+resources=Bronnen
+sharedwithMe=Met mij gedeeld
+share=Deel
+sharedwith=Gedeeld met
+accessPermissions=Toegangsrechten
+permissionRequests=Toestemmingsverzoeken
+approve=Goedkeuren
+approveAll=Alles goedkeuren
+people=personen
+perPage=per pagina
+currentPage=Huidige pagina
+sharetheResource=Deel de bron
+group=Groep
+selectPermission=Selecteer toestemming
+addPeople=Voeg personen toe om uw bron mee te delen
+addTeam=Voeg een team toe om uw bron mee te delen
+myPermissions=Mijn toestemmingen
+waitingforApproval=Wacht op goedkeuring
+anyPermission=Alle toestemmingen
+
+# Openshift messages
+openshift.scope.user_info=Gebruikersinformatie
+openshift.scope.user_check-access=Gebruikerstoegangsinformatie
+openshift.scope.user_full=Volledige toegang
+openshift.scope.list-projects=Lijst van projecten
+
+error-invalid-value=Ongeldige waarde.
+error-invalid-blank=Geef een waarde op.
+error-empty=Geef een waarde op.
+error-invalid-length=Attribuut {0} moet een lengte tussen {1} en {2} hebben.
+error-invalid-length-too-short=Attribuut {0} moet minimaal {1} lang zijn.
+error-invalid-length-too-long=Attribute {0} mag niet langer dan {2} zijn.
+error-invalid-email=Ongeldig e-mailadres.
+error-invalid-number=Ongeldig nummer.
+error-number-out-of-range=Attribuut {0} moet een nummer tussen {1} en {2} zijn.
+error-number-out-of-range-too-small=Attribuut {0} moet minimaal een waarde van {1} hebben.
+error-number-out-of-range-too-big=Attribuut {0} mag maximaal een waarde van {2} hebben.
+error-pattern-no-match=Ongeldige waarde.
+error-invalid-uri=Ongeldige URL.
+error-invalid-uri-scheme=Ongeldig URL schema.
+error-invalid-uri-fragment=Ongeldig URL fragment.
+error-user-attribute-required=Specificeer attribuut {0}.
+error-invalid-date=Ongeldige datum.
+error-user-attribute-read-only=Het veld {0} staat op alleen-lezen.
+error-username-invalid-character=Gebruikersnaam bevat een ongeldig karakter.
+error-person-name-invalid-character=Naam bevat een ongeldig karakter.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_no.properties b/themes/custom-theme-template/account/messages/messages_no.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7271dd254104dfd0b99d00ac16cd750a187b7e23
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_no.properties
@@ -0,0 +1,154 @@
+doSave=Lagre
+doCancel=Avbryt
+doLogOutAllSessions=Logg ut av alle sesjoner
+doRemove=Fjern
+doAdd=Legg til
+doSignOut=Logg ut
+
+editAccountHtmlTitle=Rediger konto
+federatedIdentitiesHtmlTitle=Federerte identiteter
+accountLogHtmlTitle=Kontologg
+changePasswordHtmlTitle=Endre passord
+sessionsHtmlTitle=Sesjoner
+accountManagementTitle=Keycloak kontoadministrasjon
+authenticatorTitle=Autentikator
+applicationsHtmlTitle=Applikasjoner
+
+authenticatorCode=Engangskode
+email=E-post
+firstName=Fornavn
+givenName=Fornavn
+fullName=Fullt navn
+lastName=Etternavn
+familyName=Etternavn
+password=Passord
+passwordConfirm=Bekreftelse
+passwordNew=Nytt passord
+username=Brukernavn
+address=Adresse
+street=Gate-/veinavn + husnummer
+locality=By
+region=Fylke
+postal_code=Postnummer
+country=Land
+emailVerified=E-post bekreftet
+gssDelegationCredential=GSS legitimasjonsdelegering
+
+role_admin=Administrator
+role_realm-admin=Administrator for sikkerhetsdomene
+role_create-realm=Opprette sikkerhetsdomene
+role_view-realm=Se sikkerhetsdomene
+role_view-users=Se brukere
+role_view-applications=Se applikasjoner
+role_view-clients=Se klienter
+role_view-events=Se hendelser
+role_view-identity-providers=Se identitetsleverandører
+role_manage-realm=Administrere sikkerhetsdomene
+role_manage-users=Administrere brukere
+role_manage-applications=Administrere applikasjoner
+role_manage-identity-providers=Administrere identitetsleverandører
+role_manage-clients=Administrere klienter
+role_manage-events=Administrere hendelser
+role_view-profile=Se profil
+role_manage-account=Administrere konto
+role_read-token=Lese token
+role_offline-access=Frakoblet tilgang
+role_uma_authorization=Skaffe tillatelser
+client_account=Konto
+client_security-admin-console=Sikkerhetsadministrasjonskonsoll
+client_admin-cli=Kommandolinje-grensesnitt for administrator
+client_realm-management=Sikkerhetsdomene-administrasjon
+client_broker=Broker
+
+
+requiredFields=Obligatoriske felt
+allFieldsRequired=Alle felt må fylles ut
+
+backToApplication=&laquo; Tilbake til applikasjonen
+backTo=Tilbake til {0}
+
+date=Dato
+event=Hendelse
+ip=IP
+client=Klient
+clients=Klienter
+details=Detaljer
+started=Startet
+lastAccess=Sist benyttet
+expires=Utløper
+applications=Applikasjoner
+
+account=Konto
+federatedIdentity=Federert identitet
+authenticator=Autentikator
+sessions=Sesjoner
+log=Logg
+
+application=Applikasjon
+availablePermissions=Tilgjengelige rettigheter
+grantedPermissions=Innvilgede rettigheter
+grantedPersonalInfo=Innvilget personlig informasjon
+additionalGrants=Ekstra rettigheter
+action=Handling
+inResource=i
+fullAccess=Full tilgang
+offlineToken=Offline token
+revoke=Opphev rettighet
+
+configureAuthenticators=Konfigurerte autentikatorer
+mobile=Mobiltelefon
+totpStep1=Installer ett av følgende programmer på  mobilen din.
+totpStep2=Åpne applikasjonen og skann strekkoden eller skriv inn koden.
+totpStep3=Skriv inn engangskoden gitt av applikasjonen og klikk Lagre for å fullføre.
+
+missingUsernameMessage=Vennligst oppgi brukernavn.
+missingFirstNameMessage=Vennligst oppgi fornavn.
+invalidEmailMessage=Ugyldig e-postadresse.
+missingLastNameMessage=Vennligst oppgi etternavn.
+missingEmailMessage=Vennligst oppgi e-postadresse.
+missingPasswordMessage=Vennligst oppgi passord.
+notMatchPasswordMessage=Passordene er ikke like.
+
+missingTotpMessage=Vennligst oppgi engangskode.
+invalidPasswordExistingMessage=Ugyldig eksisterende passord.
+invalidPasswordConfirmMessage=Passordene er ikke like.
+invalidTotpMessage=Ugyldig engangskode.
+
+usernameExistsMessage=Brukernavnet finnes allerede.
+emailExistsMessage=E-postadressen finnes allerede.
+
+readOnlyUserMessage=Du kan ikke oppdatere kontoen din ettersom den er skrivebeskyttet.
+readOnlyPasswordMessage=Du kan ikke oppdatere passordet ditt ettersom kontoen din er skrivebeskyttet.
+
+successTotpMessage=Autentikator for mobiltelefon er konfigurert.
+successTotpRemovedMessage=Autentikator for mobiltelefon er fjernet.
+
+successGrantRevokedMessage=Vellykket oppheving av rettighet.
+
+accountUpdatedMessage=Kontoen din har blitt oppdatert.
+accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
+
+missingIdentityProviderMessage=Identitetsleverandør er ikke spesifisert.
+invalidFederatedIdentityActionMessage=Ugyldig eller manglende handling.
+identityProviderNotFoundMessage=Spesifisert identitetsleverandør ikke funnet.
+federatedIdentityLinkNotActiveMessage=Denne identiteten er ikke lenger aktiv.
+federatedIdentityRemovingLastProviderMessage=Du kan ikke fjerne siste federerte identitet ettersom du ikke har et passord.
+identityProviderRedirectErrorMessage=Redirect til identitetsleverandør feilet.
+identityProviderRemovedMessage=Fjerning av identitetsleverandør var vellykket.
+identityProviderAlreadyLinkedMessage=Federert identitet returnert av {0} er allerede koblet til en annen bruker.
+staleCodeAccountMessage=Siden har utløpt. Vennligst prøv en gang til.
+consentDenied=Samtykke avslått.
+
+accountDisabledMessage=Konto er deaktivert, kontakt administrator.
+
+accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller prøv igjen senere.
+invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
+invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: må inneholde minimum {0} små bokstaver.
+invalidPasswordMinDigitsMessage=Ugyldig passord: må inneholde minimum {0} sifre.
+invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: må inneholde minimum {0} store bokstaver.
+invalidPasswordMinSpecialCharsMessage=Ugyldig passord: må inneholde minimum {0} spesialtegn.
+invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke være likt brukernavn.
+invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-mønster.
+invalidPasswordHistoryMessage=Ugyldig passord: kan ikke være likt noen av de {0} foregående passordene.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_pl.properties b/themes/custom-theme-template/account/messages/messages_pl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..0f1ea034d5a590e0fb6fa9845bccabc8f02f7377
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_pl.properties
@@ -0,0 +1,382 @@
+doSave=Zapisz
+doCancel=Anuluj
+doLogOutAllSessions=Wyloguj wszystkie sesje
+doRemove=Usuń
+doAdd=Dodaj
+doSignOut=Wyloguj
+doLogIn=Logowanie
+doLink=Link
+noAccessMessage=Brak dostępu
+
+personalInfoSidebarTitle=Dane konta
+accountSecuritySidebarTitle=Bezpieczeństwo konta
+signingInSidebarTitle=Zaloguj się
+deviceActivitySidebarTitle=Aktywność na urządzeniach
+linkedAccountsSidebarTitle=Połączone konta
+
+editAccountHtmlTitle=Edycja konta
+personalInfoHtmlTitle=Dane osobiste
+federatedIdentitiesHtmlTitle=Połączone tożsamości
+accountLogHtmlTitle=Dziennik konta
+changePasswordHtmlTitle=Zmień hasło
+deviceActivityHtmlTitle=Aktywność urządzeń
+sessionsHtmlTitle=Sesje
+accountManagementTitle=Zarządzanie kontem
+authenticatorTitle=Uwierzytelnienie dwuetapowe
+applicationsHtmlTitle=Aplikacje
+linkedAccountsHtmlTitle=Połączone konta
+
+accountManagementWelcomeMessage=Witamy w zarządzaniu kontem
+personalInfoIntroMessage=Zarządzaj informacjami podstawowymi o sobie
+accountSecurityTitle=Bezpieczeństwo Konta
+accountSecurityIntroMessage=Kontroluj swoje hasło i dostęp
+applicationsIntroMessage=Śledź i zarządzaj uprawnieniami aplikacji do twojego konta
+resourceIntroMessage=Udostępnij swoje zasoby członkom zespołu
+passwordLastUpdateMessage=Twoje hasło zostało zaktualizowane
+updatePasswordTitle=Aktualizuj hasło
+updatePasswordMessageTitle=Miej pewność, że wybrałeś silne hasło
+updatePasswordMessage=Silne hasło zawiera mieszaninę cyfr, liter i symboli. Nie używaj zwykłych słów oraz haseł używanych na innych kontach.
+personalSubTitle=Twoje dane osobiste
+personalSubMessage=Zarządzaj informacjami podstawowymi: twoim imieniem, nazwiskiem oraz emailem
+
+authenticatorCode=Kod jednorazowy
+email=Email
+firstName=Imię
+givenName=Imię
+fullName=Pełna nazwa
+lastName=Nazwisko
+familyName=Nazwisko rodowe
+password=Hasło
+currentPassword=Aktualne hasło
+passwordConfirm=Potwierdzenie
+passwordNew=Nowe hasło
+username=Nazwa użytkownika
+address=Adres
+street=Ulica
+locality=Miejscowość
+region=Stan, województwo, region
+postal_code=Kod pocztowy
+country=Kraj
+emailVerified=Email zweryfikowany
+website=Strona internetowa
+phoneNumber=Nr telefonu
+phoneNumberVerified=Nr telefonu zweryfikowany
+gender=Płeć
+birthday=Data urodzenia
+zoneinfo=Strefa czasowa
+gssDelegationCredential=Poświadczenia delegowane GSS
+
+profileScopeConsentText=Profil użytkownika
+emailScopeConsentText=Adres email
+addressScopeConsentText=Adres
+phoneScopeConsentText=Telefon
+offlineAccessScopeConsentText=Dostęp offline
+samlRoleListScopeConsentText=Moje role
+rolesScopeConsentText=Role użytkownika
+
+role_admin=Admin
+role_realm-admin=Strefa Admin
+role_create-realm=Utwórz strefę
+role_view-realm=Przeglądaj strefy
+role_view-users=Przeglądaj użytkowników
+role_view-applications=Przeglądaj aplikacje
+role_view-groups=Zobacz grupy
+role_view-clients=Przeglądaj klientów
+role_view-events=Przeglądaj zdarzenia
+role_view-identity-providers=Przeglądaj dostawców tożsamości
+role_view-consent=Przeglądaj zgody
+role_manage-realm=Zarządzaj strefami
+role_manage-users=Zarządzaj użytkownikami
+role_manage-applications=Zarządzaj aplikacjami
+role_manage-identity-providers=Zarządzaj dostawcami tożsamości
+role_manage-clients=Zarządzaj klientami
+role_manage-events=Zarządzaj zdarzeniami
+role_view-profile=Przeglądaj profil
+role_manage-account=Zarządzaj kontem
+role_manage-account-links=Zarządzaj linkami konta
+role_manage-consent=Zarządzaj zgodami
+role_read-token=Odczytaj token
+role_offline-access=Dostęp offline
+role_uma_authorization=Uzyskaj uprawnienia
+client_account=Konto
+client_account-console=Konsola konta
+client_security-admin-console=Konsola administratora bezpieczeństwa
+client_admin-cli=Admin CLI
+client_realm-management=Zarządzanie strefą
+client_broker=Broker
+
+
+requiredFields=Wymagane pola
+allFieldsRequired=Wszystkie pola są wymagane
+
+backToApplication=&laquo; Powrót do aplikacji
+backTo=Wróć do: {0}
+
+date=Data
+event=Zdarzenie
+ip=IP
+client=Klient
+clients=Aplikacje klienckie
+details=Szczegóły
+started=Rozpoczęta
+lastAccess=Ostatni dostęp
+expires=Data ważności
+applications=Aplikacje
+
+account=Konto
+federatedIdentity=Połączone tożsamości
+authenticator=Uwierzytelnienie dwuetapowe
+device-activity=Aktywność urządzenia
+sessions=Sesje
+log=Dziennik
+
+application=Aplikacja
+availableRoles=Dostępne role
+grantedPermissions=Przydzielone uprawnienia
+grantedPersonalInfo=Przydzielone dane osobiste
+additionalGrants=Dodatkowe przydziały
+action=Akcje
+inResource=w
+fullAccess=Pełny dostęp
+offlineToken=Token offline
+revoke=Odbierz uprawnienia
+
+configureAuthenticators=Skonfigurowane autentykatory
+mobile=Mobilne
+totpStep1=Zainstaluj jedną z następujących aplikacji na telefonie komórkowym:
+totpStep2=Otwórz aplikację i zeskanuj kod kreskowy:
+totpStep3=Wprowadź jednorazowy kod podany przez aplikację i kliknij Zapisz aby zakończyć konfigurację.
+totpStep3DeviceName=Podaj nazwę urządzenia aby lepiej zarządzać swoimi urządzeniami haseł jednorazowych.
+
+totpManualStep2=Otwórz aplikację i wprowadź klucz:
+totpManualStep3=Użyj poniższych wartości konfiguracji, jeśli aplikacja pozwala na ich ustawienie:
+totpUnableToScan=Nie można skanować?
+totpScanBarcode=Zeskanować kod paskowy?
+
+totp.totp=Oparte o czas
+totp.hotp=Oparte o licznik
+
+totpType=Typ
+totpAlgorithm=Algorytm
+totpDigits=Cyfry
+totpInterval=Interwał
+totpCounter=Licznik
+totpDeviceName=Nazwa urządzenia
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=Ta akcja jest nieodwracalna
+deletingImplies=Usunięcie konta spowoduje:
+errasingData=Usunięcie wszystkich danych
+loggingOutImmediately=Natychmiastowe wylogowanie
+accountUnusable=Nie będzie można więcej korzystać z aplikacji na tym koncie
+
+missingUsernameMessage=Proszę podać nazwę użytkownika.
+missingFirstNameMessage=Proszę podać imię.
+invalidEmailMessage=Nieprawidłowy adres email.
+missingLastNameMessage=Proszę podać nazwisko.
+missingEmailMessage=Proszę podać e-mail.
+missingPasswordMessage=Proszę podać hasło.
+notMatchPasswordMessage=Hasła nie są zgodne.
+invalidUserMessage=Nieprawidłowy użytkownik
+updateReadOnlyAttributesRejectedMessage=Nie można zaktualizować atrybutu oznaczonego "tylko do odczytu"
+
+missingTotpMessage=Proszę podać kod uwierzytelniający.
+missingTotpDeviceNameMessage=Proszę podać nazwę urządzenia.
+invalidPasswordExistingMessage=Nieprawidłowe aktualne hasło.
+invalidPasswordConfirmMessage=Potwierdzenie hasła nie jest zgodne.
+invalidTotpMessage=Nieprawidłowy kod uwierzytelniający.
+
+usernameExistsMessage=Nazwa użytkownika już jest wykorzystana.
+emailExistsMessage=Email już istnieje.
+
+readOnlyUserMessage=Zmiana nie jest możliwa, ponieważ edycja konta jest zablokowana.
+readOnlyUsernameMessage=Zmiana nazwy użytkownika nie jest możliwa, ponieważ edycja konta jest zablokowana.
+readOnlyPasswordMessage=Zmiana hasła nie jest możliwa, ponieważ edycja konta jest zablokowana.
+
+successTotpMessage=Mobilny autentykator skonfigurowany.
+successTotpRemovedMessage=Mobilny autentykator usunięty.
+
+successGrantRevokedMessage=Cofnięto uprawnienia.
+
+accountUpdatedMessage=Twoje konto zostało zaktualizowane.
+accountPasswordUpdatedMessage=Twoje hasło zostało zmienione.
+
+missingIdentityProviderMessage=Dostawca tożsamości nie został wybrany.
+invalidFederatedIdentityActionMessage=Nieprawidłowa akcja.
+identityProviderNotFoundMessage=Podany dostawca tożsamości nie istnieje.
+federatedIdentityLinkNotActiveMessage=Podana tożsamość nie jest już aktywna.
+federatedIdentityRemovingLastProviderMessage=Nie można usunąć ostatniej połączonej tożsamości, jeżeli nie ustawiłeś hasła.
+identityProviderRedirectErrorMessage=Nieudane przekierowanie do zewnętrznego dostawcy tożsamości.
+identityProviderRemovedMessage=Dostawca tożsamości został usunięty.
+identityProviderAlreadyLinkedMessage=Połączona tożsamość {0} jest już przypisana do innego użytkownika.
+staleCodeAccountMessage=Strona wygasła. Prosimy spróbować ponownie.
+consentDenied=Zgoda wycofana.
+access-denied-when-idp-auth=Brak dostępu przy użyciu {0}
+
+accountDisabledMessage=Konto jest zablokowane, skontaktuj się z administratorem.
+
+accountTemporarilyDisabledMessage=Konto jest tymczasowo zablokowane, skontaktuj się z administratorem lub spróbuj później.
+invalidPasswordMinLengthMessage=Nieprawidłowe hasło: minimalna długość {0}.
+invalidPasswordMaxLengthMessage=Nieprawidłowe hasło: maksymalna długość {0}.
+invalidPasswordMinLowerCaseCharsMessage=Nieprawidłowe hasło: brak małych liter (co najmniej {0}).
+invalidPasswordMinDigitsMessage=Nieprawidłowe hasło: brak cyfr (co najmniej {0}).
+invalidPasswordMinUpperCaseCharsMessage=Nieprawidłowe hasło: brak dużych liter (co najmniej {0}).
+invalidPasswordMinSpecialCharsMessage=Nieprawidłowe hasło: brak znaków specjalnych (co najmniej {0}).
+invalidPasswordNotUsernameMessage=Nieprawidłowe hasło: nie może być zgodne z nazwą użytkownika.
+invalidPasswordNotEmailMessage=Nieprawidłowe hasło: nie może być zgodne z adresem email.
+invalidPasswordRegexPatternMessage=Nieprawidłowe hasło: nie spełnia przyjętych reguł.
+invalidPasswordHistoryMessage=Nieprawidłowe hasło: jest identyczne jak jedno z ostatnich ({0}) haseł.
+invalidPasswordBlacklistedMessage=Nieprawidłowe hasło: jest na liście haseł zabronionych.
+invalidPasswordGenericMessage=Nieprawidłowe hasło: nowe hasło nie spełnia polityki haseł.
+
+# Authorization
+myResources=Moje zasoby
+myResourcesSub=Moje zasoby
+doDeny=Zabroń
+doRevoke=Cofnij
+doApprove=Akceptuj
+doRemoveSharing=Usuń udostępnianie
+doRemoveRequest=Usuń żądanie
+peopleAccessResource=Osoby z dostępem do tego zasobu
+resourceManagedPolicies=Uprawnienia dające dostęp do tego zasobu
+resourceNoPermissionsGrantingAccess=Brak uprawnień dających dostęp do tego zasobu
+anyAction=Dowolna akcja
+description=Opis
+name=Nazwa
+scopes=Zakres
+resource=Zasób
+user=Użytkownik
+peopleSharingThisResource=Osoby współdzielące ten zasób
+shareWithOthers=Udostępnij innym
+needMyApproval=Wymagana moja akceptacja
+requestsWaitingApproval=Twoje żądanie czeka na akceptację
+icon=Ikona
+requestor=Żądający
+owner=Właściciel
+resourcesSharedWithMe=Zasoby współdzielone ze mną
+permissionRequestion=Żądania uprawnień
+permission=Uprawnienia
+shares=udostępnienia
+notBeingShared=Ten zasób nie jest współdzielony.
+notHaveAnyResource=Nie masz żadnych zasobów
+noResourcesSharedWithYou=Brak zasobów udostępnionych dla Ciebie
+havePermissionRequestsWaitingForApproval=Masz {0} żądań uprawnień oczekujących na akceptację.
+clickHereForDetails=Więcej szczegółów...
+resourceIsNotBeingShared=Zasób nie jest współdzielony
+
+# Applications
+applicationName=Nazwa
+applicationType=Typ aplikacji
+applicationInUse=Tylko w użyciu
+clearAllFilter=Wyczyść filtry
+activeFilters=Aktywne filtry
+filterByName=Filtruj wg nazwy ...
+allApps=Wszystkie aplikacje
+internalApps=Wewnętrzne aplikacje
+thirdpartyApps=Zewnętrzne aplikacje
+appResults=Wyniki
+clientNotFoundMessage=Nie znaleziono klienta
+
+# Linked account
+authorizedProvider=Dostawca logowania
+authorizedProviderMessage=Dostawca logowania powiązany z kontem
+identityProvider=Dostawca tożsamości
+identityProviderMessage=Powiązanie konta ze skonfigurowanym dostawcą tożsamości
+socialLogin=Serwisy społecznościowe
+userDefined=Użytkownika
+removeAccess=Usuń dostęp
+removeAccessMessage=Konieczne będzie ponowne nadanie dostępu, aby użyć konta z tej aplikacji
+
+#Authenticator
+authenticatorStatusMessage=Dwuskładnikowe uwierzytelnianie jest obecnie
+authenticatorFinishSetUpTitle=Dwuskładnikowe uwierzytelnianie
+authenticatorFinishSetUpMessage=Przy każdym logowaniu, będziesz proszony o wpisanie kodu drugiego składnika uwierzytelniania.
+authenticatorSubTitle=Ustaw dwuskładnikowe uwierzytelnianie
+authenticatorSubMessage=Aby zwiększyć poziom bezpieczeństwa swojego konta, włącz co najmniej jedną z dostępnych metod dwuskładnikowego uwierzytelniania.
+authenticatorMobileTitle=Autentykator mobilny
+authenticatorMobileMessage=Użyj aplikacji mobilnej do otrzymywania kodów dwuskładnikowego uwierzytelniania.
+authenticatorMobileFinishSetUpMessage=Moduł uwierzytelniający został powiązany z Twoim telefonem.
+authenticatorActionSetup=Ustaw
+authenticatorSMSTitle=Kod SMS
+authenticatorSMSMessage=Keycloak wyśle kod weryfikacyjny na Twój telefon jako dwuskładnikowe uwierzytelnianie.
+authenticatorSMSFinishSetUpMessage=Wiadomości są wysyłane do
+authenticatorDefaultStatus=domyślne
+authenticatorChangePhone=Zmień numer telefonu
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Konfiguracja uwierzytelniania mobilnego
+smscodeIntroMessage=Podaj numer telefonu, kod weryfikacyjny zostanie wysłany na podany numer.
+mobileSetupStep1=Zainstaluj aplikację na telefonie. Podane aplikację są wspierane.
+mobileSetupStep2=Otwórz aplikację i zeskanuj kod:
+mobileSetupStep3=Wpisz kod wygenerowany przez aplikację i zapisz aby zakończyć konfigurację.
+scanBarCode=Chcesz zeskanować kod 2D?
+enterBarCode=Wpisz kod jednorazowy
+doCopy=Kopiuj
+doFinish=Zakończ
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Konfiguracja SMS
+chooseYourCountry=Wybierz kraj
+enterYourPhoneNumber=Wpisz numer telefonu
+sendVerficationCode=Wyślij kod weyfikacyjny
+enterYourVerficationCode=Wpisz kod weryfikacyjny
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Zapasowy mechanizm uwierzytelniania
+realmName=Domena
+doDownload=Pobierz
+doPrint=Drukuj
+generateNewBackupCodes=Generuj nowe kody zapasowe
+backtoAuthenticatorPage=Powrót do ustawień uwierzytelniania
+
+
+#Resources
+resources=Zasoby
+sharedwithMe=Udostępnione dla mnie
+share=Udostępnij
+sharedwith=Udostępnione dla
+accessPermissions=Prawa dostępu
+permissionRequests=Żądania dostępu
+approve=Akceptuj
+approveAll=Akceptuj wszystkie
+people=osoby
+perPage=na stronie
+currentPage=Aktualna strona
+sharetheResource=Udostępnij zasób
+group=Grupa
+selectPermission=Wybierz uprawnienie
+addPeople=Dodaj osoby do udostępniania
+addTeam=Dodaj zespół do udostępniania
+myPermissions=Moje uprawnienia
+waitingforApproval=Oczekuje na zatwierdzenie
+anyPermission=Dowolne uprawnienia
+
+# Openshift messages
+openshift.scope.user_info=Informacje użytkownika
+openshift.scope.user_check-access=Informacje o uprawnieniach
+openshift.scope.user_full=Pełny dostęp
+openshift.scope.list-projects=Lista projektów
+
+error-invalid-value=Nieprawidłowa wartość.
+error-invalid-blank=Podaj wartość.
+error-empty=Podaj wartość.
+error-invalid-length=Atrybut {0} musi mieć długość pomiędzy {1} a {2}
+error-invalid-length-too-short=Atrybut {0} musi mieć minimalną długość {1}
+error-invalid-length-too-long=Atrybut {0} musi mieć maksymalną długość {2}
+error-invalid-email=Nieprawidłowy adres email.
+error-invalid-number=Nieprawidłowy numer.
+error-number-out-of-range=Atrybut {0} musi zawierać się pomiędzy {1} a {2}
+error-number-out-of-range-too-small=Atrybut {0} musi mieć minimalną wartość {1}
+error-number-out-of-range-too-big=Atrybut {0} musi mieć maksymalną wartość {2}
+error-pattern-no-match=Nieprawidłowa wartość.
+error-invalid-uri=Nieprawidłowy URL.
+error-invalid-uri-scheme=Nieprawidłowy wyróżnik URL.
+error-invalid-uri-fragment=Nieprawidłowy adres URL.
+error-user-attribute-required=Określ atrybut {0}.
+error-invalid-date=Nieprawidłowa data.
+error-user-attribute-read-only=Pole {0} jest tylko do odczytu.
+error-username-invalid-character=Login zawiera nieprawidłowy znak.
+error-person-name-invalid-character=Nazwa zawiera nieprawidłowy znak.
diff --git a/themes/custom-theme-template/account/messages/messages_pt_BR.properties b/themes/custom-theme-template/account/messages/messages_pt_BR.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f5b7ccfd0f3794669ae2fdbb69515b9da60b52c9
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_pt_BR.properties
@@ -0,0 +1,351 @@
+doSave=Salvar
+doCancel=Cancelar
+doLogOutAllSessions=Sair de todas as sessões
+doRemove=Remover
+doAdd=Adicionar
+doSignOut=Sair
+doLogIn=Entrar
+doLink=Vincular
+noAccessMessage=Acesso não permitido
+
+
+editAccountHtmlTitle=Editar Conta
+personalInfoHtmlTitle=Informações Pessoais
+federatedIdentitiesHtmlTitle=Identidades Federadas
+accountLogHtmlTitle=Histórico da conta
+changePasswordHtmlTitle=Alterar senha
+deviceActivityHtmlTitle=Atividade de Dispositivos
+sessionsHtmlTitle=Sessões
+accountManagementTitle=Gerenciamento de Conta
+authenticatorTitle=Autenticator
+applicationsHtmlTitle=Aplicativos
+linkedAccountsHtmlTitle=Contas Vinculadas
+
+accountManagementWelcomeMessage=Bem-vindo ao Gerenciamento de Conta
+personalInfoIntroMessage=Gerenciar informações básicas
+accountSecurityTitle=Segurança da Conta
+accountSecurityIntroMessage=Gerencie sua senha e acesso da conta
+applicationsIntroMessage=Acompanhe e gerencie as permissões de app para acesso à sua conta
+resourceIntroMessage=Compartilhe seus recursos com membros de equipe
+passwordLastUpdateMessage=Sua senha foi atualizada em
+updatePasswordTitle=Atualizar Senha
+updatePasswordMessageTitle=Certifique-se de que a nova senha é segura
+updatePasswordMessage=Uma senha segura contém uma combinação de número, letras e caracteres especiais. Ela deve ser difícil de adivinhar, não pode se assemelhar a uma palavra real e não é utilizada em outros lugares.
+personalSubTitle=Suas Informações Pessoais
+personalSubMessage=Gerencie as informações básicas: seu primeiro nome, seu sobrenome e seu endereço de e-mail
+
+authenticatorCode=Código autenticador
+email=E-mail
+firstName=Primeiro nome
+givenName=Primeiro nome
+fullName=Nome completo
+lastName=Sobrenome
+familyName=Sobrenome
+password=Senha
+currentPassword=Senha Atual
+passwordConfirm=Confirmação
+passwordNew=Nova senha
+username=Nome de usúario
+address=Endereço
+street=Logradouro
+locality=Cidade ou Localidade
+region=Estado
+postal_code=CEP
+country=País
+emailVerified=E-mail verificado
+website=Página da web
+phoneNumber=Número de telefone
+phoneNumberVerified=Número de telefone verificado
+gender=Gênero
+birthday=Data de nascimento
+zoneinfo=Zona horária
+gssDelegationCredential=Delegação de Credenciais GSS
+
+profileScopeConsentText=Perfil de usuário
+emailScopeConsentText=Endereço de e-mail
+addressScopeConsentText=Endereço
+phoneScopeConsentText=Número de telefone
+offlineAccessScopeConsentText=Acesso Offline
+samlRoleListScopeConsentText=Meus Perfis de Acesso
+rolesScopeConsentText=Perfis de acesso de usuário
+
+role_admin=Administrador
+role_realm-admin=Administrador de domínio
+role_create-realm=Criar domínio
+role_view-realm=Visualizar domínio
+role_view-users=Visualizar usuários
+role_view-applications=Visualizar aplicativos
+role_view-clients=Visualizar clientes
+role_view-events=Visualizar eventos
+role_view-identity-providers=Visualizar provedores de identidade
+role_view-consent=Visualizar consentimentos
+role_manage-realm=Gerenciar domínio
+role_manage-users=Gerenciar usuários
+role_manage-applications=Gerenciar aplicativos
+role_manage-identity-providers=Gerenciar provedores de identidade
+role_manage-clients=Gerenciar clientes
+role_manage-events=Gerenciar eventos
+role_view-profile=Visualizar perfil
+role_manage-account=Gerenciar conta
+role_manage-account-links=Gerenciar vinculações de conta
+role_manage-consent=Gerenciar consentimentos
+role_read-token=Ler token
+role_offline-access=Acesso offline
+role_uma_authorization=Obter permissões
+client_account=Conta
+client_account-console=Console de Conta
+client_security-admin-console=Console de Administração de Segurança
+client_admin-cli=CLI de Administração
+client_realm-management=Gerenciamento de Domínio
+client_broker=Provedor de Identidade
+
+
+requiredFields=Campos obrigatórios
+allFieldsRequired=Todos os campos são obrigatórios
+
+backToApplication=&laquo; Voltar para aplicação
+backTo=Voltar para {0}
+
+date=Data
+event=Evento
+ip=IP
+client=Cliente
+clients=Clientes
+details=Detalhes
+started=Início em
+lastAccess=Último acesso
+expires=Expira em
+applications=Aplicativos
+
+account=Conta
+federatedIdentity=Identidade Federada
+authenticator=Autenticador
+device-activity=Atividade de Dispositivos
+sessions=Sessões
+log=Histórico
+
+application=Aplicativo
+availableRoles=Perfis de Acesso Disponíveis
+grantedPermissions=Permissões Concedidas
+grantedPersonalInfo=Informações Pessoais Concedidas
+additionalGrants=Concessões Adicionais
+action=Ação
+inResource=em
+fullAccess=Acesso Completo
+offlineToken=Token Offline
+revoke=Revogar Concessão
+
+configureAuthenticators=Autenticadores Configurados
+mobile=Móvel
+totpStep1=Instale uma das seguintes aplicações no seu celular:
+totpStep2=Abra a aplicação e escaneie o código QR:
+totpStep3=Insira o código de uso único exibido pela aplicação e clique em Salvar para finalizar a configuração.
+totpStep3DeviceName=Forneça um nome de dispositivo para ajudá-lo a gerenciar seus dipositivos de autenticação de dois fatores.
+
+totpManualStep2=Abra a aplicação e insira a chave:
+totpManualStep3=Use as seguintes configurações se a aplicação permitir:
+totpUnableToScan=Não consegue escanear?
+totpScanBarcode=Escanear código QR?
+
+totp.totp=Baseada em tempo
+totp.hotp=Baseada em contador
+
+totpType=Tipo
+totpAlgorithm=Algoritmo
+totpDigits=Dígitos
+totpInterval=Intervalo
+totpCounter=Contador
+totpDeviceName=Nome do Dispositivo
+
+irreversibleAction=Esta ação é irreversível
+deletingImplies=Apagar a sua conta implica em:
+errasingData=Remover todos os dados
+loggingOutImmediately=Finalizar a sessão imediatamente
+accountUnusable=Qualquer uso subsquente da aplicação não será mais possível com esta conta
+
+missingUsernameMessage=Por favor, especifique o nome de usuário.
+missingFirstNameMessage=Por favor, informe o primeiro nome.
+invalidEmailMessage=E-mail inválido.
+missingLastNameMessage=Por favor, informe o sobrenome.
+missingEmailMessage=Por favor, informe o e-mail.
+missingPasswordMessage=Por favor, informe a senha.
+notMatchPasswordMessage=As senhas não coincidem.
+invalidUserMessage=Usuário inválido
+updateReadOnlyAttributesRejectedMessage=Atualização de atributo de apenas leitura não permitida
+
+missingTotpMessage=Por favor, informe o código de uso único.
+missingTotpDeviceNameMessage=Por favor, informe o nome do dispositivo.
+invalidPasswordExistingMessage=A senha atual é inválida.
+invalidPasswordConfirmMessage=A senha de confirmação não coincide.
+invalidTotpMessage=Código de uso único inválido.
+
+usernameExistsMessage=Este nome de usuário já existe.
+emailExistsMessage=Este endereço de e-mail já existe.
+
+readOnlyUserMessage=Você não pode atualizar sua conta, uma vez que é apenas de leitura.
+readOnlyUsernameMessage=Você^não pode atualizar o seu nome de usuário, uma vez que é apenas de leitura.
+readOnlyPasswordMessage=Você não pode atualizar sua senha, uma vez que sua conta é apenas de leitura.
+
+successTotpMessage=Autenticador móvel configurado.
+successTotpRemovedMessage=Autenticador móvel removido.
+
+successGrantRevokedMessage=Concessão revogada com sucesso.
+
+accountUpdatedMessage=Sua conta foi atualizada.
+accountPasswordUpdatedMessage=Sua senha foi atualizada.
+
+missingIdentityProviderMessage=Provedor de identidade não especificado.
+invalidFederatedIdentityActionMessage=Ação inválida ou ausente.
+identityProviderNotFoundMessage=O provedor de identidade especificado não foi encontrado.
+federatedIdentityLinkNotActiveMessage=Esta identidade não está mais em atividade.
+federatedIdentityRemovingLastProviderMessage=Você não pode remover a última identidade federada, porque você não tem uma senha.
+identityProviderRedirectErrorMessage=Falha ao redirecionar para o provedor de identidade.
+identityProviderRemovedMessage=Provedor de identidade removido com sucesso.
+identityProviderAlreadyLinkedMessage=Identidade federada retornada por {0} já está ligada a outro usuário.
+staleCodeAccountMessage=A página expirou. Por favor, tente novamente.
+consentDenied=Consentimento negado.
+
+accountDisabledMessage=Conta desativada, por favor, contate um administrador.
+
+accountTemporarilyDisabledMessage=A conta está temporariamente indisponível, contate um administrador ou tente novamente mais tarde.
+invalidPasswordMinLengthMessage=Senha inválida\: deve ter pelo menos {0} caracteres.
+invalidPasswordMinLowerCaseCharsMessage=Senha inválida\: deve conter pelo menos {0} letra(s) minúscula(s).
+invalidPasswordMinDigitsMessage=Senha inválida\: deve conter pelo menos {0} número(s).
+invalidPasswordMinUpperCaseCharsMessage=Senha inválida\: deve conter pelo menos {0} letra(s) maiúscula(s).
+invalidPasswordMinSpecialCharsMessage=Senha inválida\: deve conter pelo menos {0} caractere(s) especial(is).
+invalidPasswordNotUsernameMessage=Senha inválida\: não pode ser igual ao nome de usuário.
+invalidPasswordNotEmailMessage=Senha inválida: não pode ser igual ao endereço de e-mail.
+invalidPasswordRegexPatternMessage=Senha inválida\: não corresponde ao(s) padrão(ões) da expressão regular.
+invalidPasswordHistoryMessage=Senha inválida\: não pode ser igual a qualquer uma da(s) última(s) {0} senha(s).
+invalidPasswordBlacklistedMessage=Senha inválida: esta senha está na lista de exclusão.
+invalidPasswordGenericMessage=Senha inválida: a nova senha não cumpre as políticas de senha.
+
+# Authorization
+myResources=Meus Recursos
+myResourcesSub=Meus recursos
+doDeny=Negar
+doRevoke=Revogar
+doApprove=Permitir
+doRemoveSharing=Remover Compartilhamento
+doRemoveRequest=Remover Solicitação
+peopleAccessResource=Pessoas com acesso a este recurso
+resourceManagedPolicies=Permissões dando acesso a este recurso
+resourceNoPermissionsGrantingAccess=Sem permissões dando acesso a este recurso
+anyAction=Qualquer ação
+description=Descrição
+name=Nome
+scopes=Escopo
+resource=Recurso
+user=Usuário
+peopleSharingThisResource=Pessoas compartilhando este recurso
+shareWithOthers=Compartilhar com outros
+needMyApproval=Requer minha aprovação
+requestsWaitingApproval=Solicitações suas aguardando aprovação
+icon=Ícone
+requestor=Requerente
+owner=Dono
+resourcesSharedWithMe=Recursos compartilhados comigo
+permissionRequestion=Solicitação de Permissão
+permission=Permissão
+shares=compartilha(m)
+notBeingShared=Este recurso não está sendo compartilhado.
+notHaveAnyResource=Você não possui recursos
+noResourcesSharedWithYou=Não há recursos compartilhados com você
+havePermissionRequestsWaitingForApproval=Você tem {0} solicitação(ões) de permissão aguardando aprovação.
+clickHereForDetails=Clique aqui para mais detalhes.
+resourceIsNotBeingShared=O recurso não é compartilhado
+
+# Applications
+applicationName=Nome
+applicationType=Tipo de aplicação
+applicationInUse=Uso apenas em aplicação
+clearAllFilter=Limpar todos os filtros
+activeFilters=Filtros ativos
+filterByName=Filtrar Por Nome ...
+allApps=Todas as aplicações
+internalApps=Aplicações internas
+thirdpartyApps=Aplicações de terceiros
+appResults=Resultados
+clientNotFoundMessage=Cliente não encontrado.
+
+# Linked account
+authorizedProvider=Provedor Autorizado
+authorizedProviderMessage=Provedores Autorizados vinculados à sua conta
+identityProvider=Provedor de Identidade
+identityProviderMessage=Para vincular a sua conta aos provedores de identidade configurados
+socialLogin=Login Social
+userDefined=Definido por Usuário
+removeAccess=Remover Acesso
+removeAccessMessage=Você deverá conceder acesso novamente se quiser usar esta conta de app.
+
+#Authenticator
+authenticatorStatusMessage=A autenticação de dois fatores está
+authenticatorFinishSetUpTitle=Sua Autenticação de Dois Fatores
+authenticatorFinishSetUpMessage=Sempre que entrar na sua conta, você deverá fornecer um código de autenticação de dois fatores.
+authenticatorSubTitle=Configurar Autenticação de Dois Fatores
+authenticatorSubMessage=Para aumentar a segurança da sua conta, habilite pelo menos um método de autenticação de dois fatores disponível.
+authenticatorMobileTitle=Autenticador Móvel
+authenticatorMobileMessage=Use um autenticador móvel para obter códigos de verificação para autenticação de dois fatores.
+authenticatorMobileFinishSetUpMessage=O autenticador foi vinculado ao seu celular.
+authenticatorActionSetup=Configurar
+authenticatorSMSTitle=Código SMS
+authenticatorSMSMessage=A aplicação irá enviar o código de verificação para o seu celular como autenticação de dois fatores.
+authenticatorSMSFinishSetUpMessage=As mensagens de texto serão enviadas para
+authenticatorDefaultStatus=Padrão
+authenticatorChangePhone=Mudar Número de Celular
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Configuração do Autenticador Móvel
+smscodeIntroMessage=Insira seu número de celular e o código de verificação será enviado para o seu dispositivo.
+mobileSetupStep1=Instale um app autenticador no seu celular. As seguintes aplicações são suportadas.
+mobileSetupStep2=Abra a aplicação e escaneie o código QR:
+mobileSetupStep3=Insira o código autenticador exibido pela aplicação e clique em Salvar para finalizar a configuração.
+scanBarCode=Escanear código QR?
+enterBarCode=Insira o código autenticador
+doCopy=Copiar
+doFinish=Finalizar
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Configuração de Código SMS
+chooseYourCountry=Selecione seu país
+enterYourPhoneNumber=Insira seu número de telefone
+sendVerficationCode=Enviar Código de Verificação
+enterYourVerficationCode=Insira o seu código de verificação
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Configuração de Códigos de Emergência
+realmName=Domínio
+doDownload=Baixar
+doPrint=Imprimir
+generateNewBackupCodes=Gerar Novos Códigos de Emergência
+backtoAuthenticatorPage=Voltar à Página de Autenticador
+
+
+#Resources
+resources=Recursos
+sharedwithMe=Compartilhados Comigo
+share=Compartilhar
+sharedwith=Compartilhado com
+accessPermissions=Permissões de Acesso
+permissionRequests=Pedidos de Acesso
+approve=Aprovar
+approveAll=Aprovar todos
+people=pessoas
+perPage=por página
+currentPage=Página Atual
+sharetheResource=Compartilhar recurso
+group=Grupo
+selectPermission=Selecionar Permissão
+addPeople=Adicionar pessoas que compartilhem o recurso
+addTeam=Adicionar equipe que compartilhe o recurso
+myPermissions=Minhas Permissões
+waitingforApproval=Aguardando aprovação
+anyPermission=Qualquer Permissão
+
+# Openshift messages
+openshift.scope.user_info=Informações do usuário
+openshift.scope.user_check-access=Informações de acesso do usuário
+openshift.scope.user_full=Acesso Completo
+openshift.scope.list-projects=Listar projetos
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_ru.properties b/themes/custom-theme-template/account/messages/messages_ru.properties
new file mode 100644
index 0000000000000000000000000000000000000000..69c501dae08a465679d0992775d62dd00cebc5c3
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_ru.properties
@@ -0,0 +1,236 @@
+doSave=Сохранить
+doCancel=Отмена
+doLogOutAllSessions=Выйти из всех сессий
+doRemove=Удалить
+doAdd=Добавить
+doSignOut=Выход
+doSignIn=Вход
+update=Обновить
+remove=Удалить
+refreshPage=Обновить страницу
+refresh=Обновить
+pageNotFound=Страница не найдена
+invalidRoute={0} неправильный путь.
+continue=Продолжить
+doLogIn=Вход
+
+accountManagementWelcomeMessage=Добро пожаловать в консоль управления вашей учетной записью
+loadingMessage=Консоль управления учетной записью - загрузка ...
+accountSecuritySidebarTitle=Безопасность
+
+editAccountHtmlTitle=Изменение учетной записи
+federatedIdentitiesHtmlTitle=Федеративные идентификаторы
+accountLogHtmlTitle=Лог учетной записи
+changePasswordHtmlTitle=Смена пароля
+sessionsHtmlTitle=Сессии
+accountManagementTitle=Управление учетной записью
+authenticatorTitle=Аутентификатор
+applicationsHtmlTitle=Приложения
+applicationsIntroMessage=Отслеживайте и управляйте разрешениями приложений на доступ к вашей учетной записи
+accountSecurityIntroMessage=Изменение пароля и доступа к учетной записи
+
+# Personal info page
+personalInfoSidebarTitle=Личная информация
+personalInfoHtmlTitle=Личная информация
+personalSubMessage=Управление данными о себе
+personalInfoIntroMessage=Управление данными о себе
+selectLocale=Выбор языка
+
+# Applications page
+applicationsPageTitle=Приложения
+applicationsSubMessage=Управляйте разрешениями ваших приложений
+applicationName=Имя
+applicationType=Тип приложения
+status=Статус
+client=Клиент
+internalApp=Внутренний
+thirdPartyApp=Внешний
+inUse=Используется
+notInUse=Не используется
+
+
+# Signing in page
+signingIn=Вход
+signingInSidebarTitle=Вход
+signingInSubMessage=Настройте варианты входа
+password-display-name=Пароль
+credentialCreatedAt=Создан
+basic-authentication=Базовая аутентификация
+password-help-text=Вход с использованием ввода пароля
+two-factor=Двухфакторная аутентификация
+otp-display-name=приложение аутентификатор
+otp-help-text=Ввод проверочного кода из приложения аутентификатора
+setUpNew=Настроить {0}
+removeCred=Удалить {0}
+stopUsingCred=Остановить использование {0}?
+successRemovedMessage={0} был удалён.
+notSetUp={0} не настроено.
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Настройка мобильного приложения аутентификатора
+totpStep1=Установите одно из следующих приложений на ваш мобильный телефон:
+totpStep2=Откройте приложение и просканируйте QR-код:
+totpStep3=Введите одноразовый код, выданный приложением, и нажмите Подтвердить для завершения настройки.
+totpManualStep2=Откройте приложение и введите ключ:
+totpManualStep3=Используйте следующие настройки, если приложение позволяет их устанавливать:
+totpStep3DeviceName=Укажите имя устройства, которое поможет вам найти его в списке ваших устройств.
+totpUnableToScan=Не удается выполнить сканирование?
+totpScanBarcode=Сканировать QR-код?
+authenticatorCode=Одноразовый код
+totpDeviceName=Имя устройства
+totpType=Тип
+totpAlgorithm=Алгоритм
+totpDigits=Количество цифр
+totpInterval=Интервал
+totpCounter=Счетчик
+
+
+# Device activity page
+deviceActivitySidebarTitle=Активные устройства
+deviceActivityHtmlTitle=Активные устройства
+signedInDevicesExplanation=Выполните выход с незнакомых устройств
+signedInDevices=Выполнен вход на устройствах
+currentDevice=Текущее устройство
+currentSession=Текущая сессия
+lastAccessedOn=Последний доступ
+ipAddress=IP адрес
+device-activity=Активные устройства
+signOutWarning=Завершить сессию?
+signOutAllDevices=Выход на всех устройствах
+signOutAllDevicesWarning=Это действие приведет к выходу из системы всех устройств, которые вошли в вашу учетную запись, включая текущее устройство, которое вы используете.
+signedOutSession=Сессия завершена {0}/{1}
+
+email=E-mail
+firstName=Имя
+givenName=Имя
+fullName={0} {1}
+lastName=Фамилия
+familyName=Фамилия
+password=Пароль
+passwordConfirm=Подтверждение пароля
+passwordNew=Новый пароль
+username=Имя пользователя
+address=Адрес
+street=Улица
+locality=Город
+region=Регион
+postal_code=Почтовый индекс
+country=Страна
+emailVerified=E-mail подтвержден
+gssDelegationCredential=Делегирование учетных данных через GSS
+
+role_admin=Администратор
+role_realm-admin=Администратор realm
+role_create-realm=Создать realm
+role_view-realm=Просмотр realm
+role_view-users=Просмотр пользователей
+role_view-applications=Просмотр приложений
+role_view-clients=Просмотр клиентов
+role_view-events=Просмотр событий
+role_view-identity-providers=Просмотр провайдеров учетных записей
+role_manage-realm=Управление realm
+role_manage-users=Управление пользователями
+role_manage-applications=Управление приложениями
+role_manage-identity-providers=Управление провайдерами учетных записей
+role_manage-clients=Управление клиентами
+role_manage-events=Управление событиями
+role_view-profile=Просмотр профиля
+role_manage-account=Управление учетной записью
+role_read-token=Чтение токена
+role_offline-access=Доступ оффлайн
+role_uma_authorization=Получение разрешений
+client_account=Учетная запись
+client_security-admin-console=Консоль администратора безопасности
+client_admin-cli=Командный интерфейс администратора
+client_realm-management=Управление Realm
+client_broker=Брокер
+
+
+requiredFields=Обязательные поля
+allFieldsRequired=Все поля обязательны
+
+backToApplication=&laquo; Назад в приложение
+backTo=Назад в {0}
+
+date=Дата
+event=Событие
+ip=IP
+client=Клиент
+clients=Клиенты
+details=Детали
+started=Начата
+lastAccess=Последний доступ
+expires=Истекает
+applications=Приложения
+
+account=Учетная запись
+federatedIdentity=Федеративный идентификатор
+authenticator=Аутентификатор
+sessions=Сессии
+log=Журнал
+
+application=Приложение
+availablePermissions=Доступные разрешения
+grantedPermissions=Согласованные разрешения
+grantedPersonalInfo=Согласованная персональная информация
+additionalGrants=Дополнительные согласования
+action=Действие
+inResource=в
+fullAccess=Полный доступ
+offlineToken=Оффлайн токен
+revoke=Отозвать согласование
+
+
+missingUsernameMessage=Введите имя пользователя.
+missingFirstNameMessage=Введите имя.
+invalidEmailMessage=Введите корректный E-mail.
+missingLastNameMessage=Введите фамилию.
+missingEmailMessage=Введите E-mail.
+missingPasswordMessage=Введите пароль.
+notMatchPasswordMessage=Пароли не совпадают.
+
+missingTotpMessage=Введите код аутентификатора.
+invalidPasswordExistingMessage=Существующий пароль неверный.
+invalidPasswordConfirmMessage=Подтверждение пароля не совпадает.
+invalidTotpMessage=Неверный код аутентификатора.
+
+usernameExistsMessage=Имя пользователя уже существует.
+emailExistsMessage=E-mail уже существует.
+
+readOnlyUserMessage=Вы не можете обновить информацию вашей учетной записи, т.к. она доступна только для чтения.
+readOnlyUsernameMessage=Вы не можете обновить имя пользователя вашей учетной записи, т.к. оно доступно только для чтения.
+readOnlyPasswordMessage=Вы не можете обновить пароль вашей учетной записи, т.к. он доступен только для чтения.
+
+successTotpMessage=Аутентификатор в мобильном приложении сконфигурирован.
+successTotpRemovedMessage=Аутентификатор в мобильном приложении удален.
+
+successGrantRevokedMessage=Согласование отозвано успешно.
+
+accountUpdatedMessage=Ваша учетная запись обновлена.
+accountPasswordUpdatedMessage=Ваш пароль обновлен.
+
+missingIdentityProviderMessage=Провайдер учетных записей не задан.
+invalidFederatedIdentityActionMessage=Некорректное или недопустимое действие.
+identityProviderNotFoundMessage=Заданный провайдер учетных записей не найден.
+federatedIdentityLinkNotActiveMessage=Идентификатор больше не активен.
+federatedIdentityRemovingLastProviderMessage=Вы не можете удалить последний федеративный идентификатор, т.к. Вы не имеете пароля.
+identityProviderRedirectErrorMessage=Ошибка перенаправления в провайдер учетных записей.
+identityProviderRemovedMessage=Провайдер учетных записей успешно удален.
+identityProviderAlreadyLinkedMessage=Федеративный идентификатор, возвращенный {0} уже используется другим пользователем.
+staleCodeAccountMessage=Страница устарела. Попробуйте еще раз.
+consentDenied=В согласовании отказано.
+
+accountDisabledMessage=Учетная запись заблокирована, обратитесь к администратору.
+
+accountTemporarilyDisabledMessage=Учетная запись временно заблокирована, обратитесь к администратору или попробуйте позже.
+invalidPasswordMinLengthMessage=Некорректный пароль: длина пароля должна быть не менее {0} символа(ов).
+invalidPasswordMinLowerCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символа(ов) в нижнем регистре.
+invalidPasswordMinDigitsMessage=Некорректный пароль: пароль должен содержать не менее {0} цифр(ы).
+invalidPasswordMinUpperCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символа(ов) в верхнем регистре.
+invalidPasswordMinSpecialCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} спецсимвола(ов).
+invalidPasswordNotUsernameMessage=Некорректный пароль: пароль не должен совпадать с именем пользователя.
+invalidPasswordRegexPatternMessage=Некорректный пароль: пароль не удовлетворяет регулярному выражению.
+invalidPasswordHistoryMessage=Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролями.
+invalidPasswordGenericMessage=Некорректный пароль: новый пароль не соответствует правилам пароля.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_sk.properties b/themes/custom-theme-template/account/messages/messages_sk.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ea57347adf92baed6b29680ab52d08f46da826c5
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_sk.properties
@@ -0,0 +1,197 @@
+doSave=Uložiť
+doCancel=Zrušiť
+doLogOutAllSessions=Odhlásenie všetkých relácií
+doRemove=Odstrániť
+doAdd=Pridať
+doSignOut=Odhlásiť
+
+editAccountHtmlTitle=Upraviť účet
+federatedIdentitiesHtmlTitle=Prepojená identita
+accountLogHtmlTitle=Denník zmien užívateľských účtov
+changePasswordHtmlTitle=Zmena hesla
+sessionsHtmlTitle=Relácie
+accountManagementTitle=Správa účtu Keycloak
+authenticatorTitle=Autentifikátor
+applicationsHtmlTitle=Aplikácie
+
+authenticatorCode=Jednorázový kód
+email=E-mail
+firstName=Meno
+givenName=Meno pri narodení
+fullName=Celé meno
+lastName=Priezvisko
+familyName=Rodné meno
+password=Heslo
+passwordConfirm=Potrvrdenie hesla
+passwordNew=Nové heslo
+username=Meno používateľa
+address=Adresa
+street=Ulica
+locality=Mesto alebo lokalita
+region=Kraj
+postal_code=PSČ
+country=Štát
+emailVerified=E-mail overený
+gssDelegationCredential=GSS delegované oprávnenie
+
+role_admin=Administrátor
+role_realm-admin=Administrátor realmu
+role_create-realm=Vytvoriť realm
+role_view-realm=Zobraziť realm
+role_view-users=Zobraziť používateľov
+role_view-applications=Zobraziť aplikácie
+role_view-clients=Zobraziť klientov
+role_view-events=Zobraziť udalosti
+role_view-identity-providers=Zobraziť klientov poskytovateľov identity
+role_manage-realm=Spravovať realm
+role_manage-users=Spravovať používateľov
+role_manage-applications=Spravovať aplikácie
+role_manage-identity-providers=Spravovať poskytovateľov identity
+role_manage-clients=Spravovať klientov
+role_manage-events=Spravovať udalosti
+role_view-profile=Zobraziť profil
+role_manage-account=Spravovať účet
+role_manage-account-links=Spravovať odkazy na účet
+role_read-token=Čítať token
+role_offline-access=Offline prístup
+role_uma_authorization=Autorizácia používateľom riadeného prístupu
+client_account=Účet klienta
+client_security-admin-console=Bezpečnostná administrátorská konzola
+client_admin-cli=Spravovať CLI klienta
+client_realm-management=Spravovať realmy klienta
+client_broker=Broker
+
+
+requiredFields=Povinné polia
+allFieldsRequired=Všetky požadované polia
+
+backToApplication=&laquo; Späť na aplikáciu
+backTo=Späť na {0}
+
+date=Dátum
+event=Udalosť
+ip=IP
+client=Klient
+clients=Klienti
+details=Podrobnosti
+started=Začíname
+lastAccess=Posledný prístup
+expires=Vyprší
+applications=Aplikácie
+
+account=Účet
+federatedIdentity=Prepojená identita
+authenticator=Autentifikátor
+sessions=Relácie
+log=Denník
+
+application=Aplikácia
+availablePermissions=Dostupné oprávnenia
+grantedPermissions=Pridelené oprávnenia
+grantedPersonalInfo=Poskytnuté osobné informácie
+additionalGrants=Dodatočné oprávnenia
+action=Akcia
+inResource=v
+fullAccess=Úplný prístup
+offlineToken=Offline token
+revoke=Zrušiť oprávnenie
+
+configureAuthenticators=Nakonfigurované autentifikátory
+mobile=Mobilný
+totpStep1=Nainštalujte vo svojom zariadení <a href="https://freeotp.github.io/" target="_blank"> FreeOTP </a> alebo Google Authenticator. Obidve aplikácie sú k dispozícii v <a href="https://play.google.com"> Google Play </a> a Apple App Store.
+totpStep2=Otvorte aplikáciu a naskenujte čiarový kód alebo zadajte kľúč.
+totpStep3=Zadajte jednorazový kód poskytnutý aplikáciou a kliknutím na tlačidlo Uložiť dokončíte nastavenie.
+
+totpManualStep2=Otvorte aplikáciu a zadajte kľúč
+totpManualStep3=Použite nasledujúce hodnoty konfigurácie, ak aplikácia umožňuje ich nastavenie
+totpUnableToScan=Nemožno skenovať?
+totpScanBarcode=Skenovanie čiarového kódu?
+
+totp.totp=Založené na čase
+totp.hotp=Založené na počítadle
+
+totpType=Typ
+totpAlgorithm=Algoritmus
+totpDigits=Číslica
+totpInterval=Interval
+totpCounter=Počítadlo
+
+missingUsernameMessage=Zadajte používateľské meno.
+missingFirstNameMessage=Zadajte meno.
+invalidEmailMessage=Neplatná e-mailová adresa.
+missingLastNameMessage=Zadajte priezvisko.
+missingEmailMessage=Zadajte e-mail.
+missingPasswordMessage=Zadajte heslo, prosím.
+notMatchPasswordMessage=Heslá sa nezhodujú.
+
+missingTotpMessage=Zadajte jednorazový kód, prosím
+invalidPasswordExistingMessage=Neplatné existujúce heslo.
+invalidPasswordConfirmMessage=Potvrdenie hesla sa nezhoduje.
+invalidTotpMessage=Neplatný jednorazový kód.
+
+usernameExistsMessage=Užívateľské meno už existuje.
+emailExistsMessage=E-mail už existuje.
+
+readOnlyUserMessage=Váš účet nemôžete aktualizovať, pretože je iba na čítanie.
+readOnlyUsernameMessage=Nemôžete aktualizovať svoje používateľské meno, pretože je iba na čítanie.
+readOnlyPasswordMessage=Heslo nemôžete aktualizovať, pretože váš účet je iba na čítanie.
+
+successTotpMessage=Konfigurácia mobilného autentifikátora.
+successTotpRemovedMessage=Mobilný autentifikátor bol odstránený.
+
+successGrantRevokedMessage=Oprávnenie bolo úspešne zrušené.
+
+accountUpdatedMessage=Váš účet bol aktualizovaný.
+accountPasswordUpdatedMessage=Vaše heslo bolo aktualizované.
+
+missingIdentityProviderMessage=Poskytovateľ identity nie je zadaný.
+invalidFederatedIdentityActionMessage=Neplatná alebo chýbajúca akcia.
+identityProviderNotFoundMessage=Zadaný poskytovateľ identity nenájdený.
+federatedIdentityLinkNotActiveMessage=Identita už nie je aktívna.
+federatedIdentityRemovingLastProviderMessage=Nemôžete odstrániť poslednú spojenú identitu, pretože nemáte heslo.
+identityProviderRedirectErrorMessage=Nepodarilo sa presmerovať na poskytovateľa identity.
+identityProviderRemovedMessage=Poskytovateľ identity bol úspešne odstránený.
+identityProviderAlreadyLinkedMessage=Spojená identita vrátená {0} je už prepojená s iným používateľom.
+staleCodeAccountMessage=Platnosť vypršala. Skúste ešte raz.
+consentDenied=Súhlas bol zamietnutý.
+
+accountDisabledMessage=Účet je zakázaný, kontaktujte správcu.
+
+accountTemporarilyDisabledMessage=Účet je dočasne zakázaný, kontaktujte administrátora alebo skúste neskôr.
+invalidPasswordMinLengthMessage=Neplatné heslo: minimálna dĺžka {0}.
+invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovať minimálne {0} malé písmená.
+invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovať aspoň {0} číslic.
+invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} veľké písmená.
+invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} špeciálne znaky.
+invalidPasswordNotUsernameMessage=Neplatné heslo: nesmie byť rovnaké ako používateľské meno.
+invalidPasswordRegexPatternMessage=Neplatné heslo: nezodpovedá regulárnemu výrazu.
+invalidPasswordHistoryMessage=Neplatné heslo: nesmie sa rovnať žiadnemu z posledných {0} hesiel.
+invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na čiernej listine.
+invalidPasswordGenericMessage=Neplatné heslo: nové heslo nezodpovedá pravidlám hesiel.
+
+# Authorization
+myResources=Moje Zdroje
+myResourcesSub=Moje zdroje
+doDeny=Zakázať
+doRevoke=Odvolať
+doApprove=Schváliť
+doRemoveSharing=Odstránenie zdieľania
+doRemoveRequest=Odstrániť požiadavku
+peopleAccessResource=Ľudia s prístupom k tomuto zdroju
+name=Názov
+scopes=Rozsahy
+resource=Zdroj
+user=Používateľ
+peopleSharingThisResource=Ľudia zdieľajúci tento zdroj
+shareWithOthers=Zdieľať s ostatnými
+needMyApproval=Potrebuje môj súhlas
+requestsWaitingApproval=Vaše požiadavky čakajú na schválenie
+icon=Ikona
+requestor=Žiadateľ
+owner=Vlastník
+resourcesSharedWithMe=Zdroje zdieľané so mnou
+permissionRequestion=Žiadosti o povolenie
+permission=Oprávnenie
+shares=podiel (y)
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_sv.properties b/themes/custom-theme-template/account/messages/messages_sv.properties
new file mode 100755
index 0000000000000000000000000000000000000000..28e6c1545b41378cb00f50a68da8fb0052c97117
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_sv.properties
@@ -0,0 +1,151 @@
+doSave=Spara
+doCancel=Avbryt
+doLogOutAllSessions=Logga ut från samtliga sessioner
+doRemove=Ta bort
+doAdd=Lägg till
+doSignOut=Logga ut
+
+editAccountHtmlTitle=Redigera konto
+federatedIdentitiesHtmlTitle=Federerade identiteter
+accountLogHtmlTitle=Kontologg
+changePasswordHtmlTitle=Byt lösenord
+sessionsHtmlTitle=Sessioner
+accountManagementTitle=Kontohantering för Keycloak
+authenticatorTitle=Autentiserare
+applicationsHtmlTitle=Applikationer
+
+authenticatorCode=Engångskod
+email=E-post
+firstName=Förnamn
+lastName=Efternamn
+password=Lösenord
+passwordConfirm=Bekräftelse
+passwordNew=Nytt lösenord
+username=Användarnamn
+address=Adress
+street=Gata
+locality=Postort
+region=Stat, Provins eller Region
+postal_code=Postnummer
+country=Land
+emailVerified=E-post verifierad
+gssDelegationCredential=GSS Delegation Credential
+
+role_admin=Administratör
+role_realm-admin=Realm-administratör
+role_create-realm=Skapa realm
+role_view-realm=Visa realm
+role_view-users=Visa användare
+role_view-applications=Visa applikationer
+role_view-clients=Visa klienter
+role_view-events=Visa event
+role_view-identity-providers=Visa identitetsleverantörer
+role_manage-realm=Hantera realm
+role_manage-users=Hantera användare
+role_manage-applications=Hantera applikationer
+role_manage-identity-providers=Hantera identitetsleverantörer
+role_manage-clients=Hantera klienter
+role_manage-events=Hantera event
+role_view-profile=Visa profil
+role_manage-account=Hantera konto
+role_read-token=Läs element
+role_offline-access=Åtkomst offline
+role_uma_authorization=Erhåll tillstånd
+client_account=Konto
+client_security-admin-console=Säkerhetsadministratörskonsol
+client_admin-cli=Administratörs-CLI
+client_realm-management=Realmhantering
+
+
+requiredFields=Obligatoriska fält
+allFieldsRequired=Samtliga fält krävs
+
+backToApplication=&laquo; Tillbaka till applikationen
+backTo=Tillbaka till {0}
+
+date=Datum
+event=Event
+ip=IP
+client=Klient
+clients=Klienter
+details=Detaljer
+started=Startade
+lastAccess=Senast åtkomst
+expires=Upphör
+applications=Applikationer
+
+account=Konto
+federatedIdentity=Federerad identitet
+authenticator=Autentiserare
+sessions=Sessioner
+log=Logg
+
+application=Applikation
+availablePermissions=Tillgängliga rättigheter
+grantedPermissions=Beviljade rättigheter
+grantedPersonalInfo=Medgiven personlig information
+additionalGrants=Ytterligare medgivanden
+action=Åtgärd
+inResource=i
+fullAccess=Fullständig åtkomst
+offlineToken=Offline token
+revoke=Upphäv rättighet
+
+configureAuthenticators=Konfigurerade autentiserare
+mobile=Mobil
+totpStep1=Installera <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> eller Google Authenticator på din enhet. Båda applikationerna finns tillgängliga på <a href="https://play.google.com">Google Play</a> och Apple App Store.
+totpStep2=Öppna applikationen och skanna streckkoden eller skriv i nyckeln.
+totpStep3=Fyll i engångskoden som tillhandahålls av applikationen och klicka på Spara för att avsluta inställningarna.
+
+missingUsernameMessage=Vänligen ange användarnamn.
+missingFirstNameMessage=Vänligen ange förnamn.
+invalidEmailMessage=Ogiltig e-postadress.
+missingLastNameMessage=Vänligen ange efternamn.
+missingEmailMessage=Vänligen ange e-post.
+missingPasswordMessage=Vänligen ange lösenord.
+notMatchPasswordMessage=Lösenorden matchar inte.
+
+missingTotpMessage=Vänligen ange autentiseringskoden.
+invalidPasswordExistingMessage=Det nuvarande lösenordet är ogiltigt.
+invalidPasswordConfirmMessage=Lösenordsbekräftelsen matchar inte.
+invalidTotpMessage=Autentiseringskoden är ogiltig.
+
+usernameExistsMessage=Användarnamnet finns redan.
+emailExistsMessage=E-posten finns redan.
+
+readOnlyUserMessage=Du kan inte uppdatera ditt konto eftersom det är skrivskyddat.
+readOnlyPasswordMessage=Du kan inte uppdatera ditt lösenord eftersom ditt konto är skrivskyddat.
+
+successTotpMessage=Mobilautentiseraren är inställd.
+successTotpRemovedMessage=Mobilautentiseraren är borttagen.
+
+successGrantRevokedMessage=Upphävandet av rättigheten lyckades.
+
+accountUpdatedMessage=Ditt konto har uppdaterats.
+accountPasswordUpdatedMessage=Ditt lösenord har uppdaterats.
+
+missingIdentityProviderMessage=Identitetsleverantör är inte angiven.
+invalidFederatedIdentityActionMessage=Åtgärden är ogiltig eller saknas.
+identityProviderNotFoundMessage=Angiven identitetsleverantör hittas inte.
+federatedIdentityLinkNotActiveMessage=Den här identiteten är inte längre aktiv.
+federatedIdentityRemovingLastProviderMessage=Du kan inte ta bort senaste federerade identiteten eftersom du inte har ett lösenord.
+identityProviderRedirectErrorMessage=Misslyckades med att omdirigera till identitetsleverantör.
+identityProviderRemovedMessage=Borttagningen av identitetsleverantören lyckades.
+identityProviderAlreadyLinkedMessage=Den federerade identiteten  som returnerades av {0} är redan länkad till en annan användare.
+staleCodeAccountMessage=Sidan har upphört att gälla. Vänligen försök igen.
+consentDenied=Samtycket förnekades.
+
+accountDisabledMessage=Kontot är inaktiverat, kontakta administratör.
+
+accountTemporarilyDisabledMessage=Kontot är tillfälligt inaktiverat, kontakta administratör eller försök igen senare.
+invalidPasswordMinLengthMessage=Ogiltigt lösenord. Minsta längd är {0}.
+invalidPasswordMinLowerCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} små bokstäver.
+invalidPasswordMinDigitsMessage=Ogiltigt lösenord: måste innehålla minst {0} siffror.
+invalidPasswordMinUpperCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} stora bokstäver.
+invalidPasswordMinSpecialCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} specialtecken.
+invalidPasswordNotUsernameMessage=Ogiltigt lösenord: Får inte vara samma som användarnamnet.
+invalidPasswordRegexPatternMessage=Ogiltigt lösenord: matchar inte kravet för lösenordsmönster.
+invalidPasswordHistoryMessage=Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.
+invalidPasswordGenericMessage=Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn.
+
+locale_fa=فارسی
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_th.properties b/themes/custom-theme-template/account/messages/messages_th.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7e11fc77ce9c7b3cf27f2107d6c066cbdc7a494f
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_th.properties
@@ -0,0 +1,382 @@
+doSave=บันทึก
+doCancel=ยกเลิก
+doLogOutAllSessions=ออกจากระบบทุกเซสชัน
+doRemove=ลบ
+doAdd=เพิ่ม
+doSignOut=ออกจากระบบ
+doLogIn=เข้าสู่ระบบ
+doLink=ลิงก์
+noAccessMessage=ไม่อนุญาตให้เข้าถึง
+
+personalInfoSidebarTitle=ข้อมูลส่วนตัว
+accountSecuritySidebarTitle=ความปลอดภัยของบัญชี
+signingInSidebarTitle=กำลังเข้าสู่ระบบ
+deviceActivitySidebarTitle=กิจกรรมของอุปกรณ์
+linkedAccountsSidebarTitle=บัญชีที่เชื่อมโยง
+
+editAccountHtmlTitle=แก้ไขบัญชี
+personalInfoHtmlTitle=ข้อมูลส่วนตัว
+federatedIdentitiesHtmlTitle=Federated Identities
+accountLogHtmlTitle=บันทึกการใช้งานบัญชี
+changePasswordHtmlTitle=เปลี่ยนรหัสผ่าน
+deviceActivityHtmlTitle=กิจกรรมของอุปกรณ์
+sessionsHtmlTitle=เซสชัน
+accountManagementTitle=การจัดการบัญชี Keycloak
+authenticatorTitle=Authenticator
+applicationsHtmlTitle=แอปพลิเคชัน
+linkedAccountsHtmlTitle=บัญชีที่เชื่อมโยง
+
+accountManagementWelcomeMessage=ยินดีต้อนรับสู่การจัดการบัญชี Keycloak
+personalInfoIntroMessage=จัดการข้อมูลพื้นฐานของคุณ
+accountSecurityTitle=ความปลอดภัยของบัญชี
+accountSecurityIntroMessage=ควบคุมรหัสผ่านและการเข้าถึงบัญชีของคุณ
+applicationsIntroMessage=ติดตามและจัดการการอนุญาตให้แอปพลิเคชันเข้าถึงบัญชีของคุณ
+resourceIntroMessage=แบ่งปันทรัพยากรของคุณให้แก่สมาชิกในทีม
+passwordLastUpdateMessage=รหัสผ่านของคุณได้รับการปรับปรุง ณ
+updatePasswordTitle=ปรับปรุงรหัสผ่าน
+updatePasswordMessageTitle=โปรดตรวจสอบให้แน่ใจว่าคุณเลือกรหัสผ่านที่แข็งแกร่ง
+updatePasswordMessage=รหัสผ่านที่แข็งแกร่งประกอบด้วยตัวเลข ตัวอักษร และสัญลักษณ์ โดยยากที่จะถูกเดารูปแบบ ไม่คล้ายคำจริง และใช้เฉพาะสำหรับบัญชีนี้เท่านั้น
+personalSubTitle=ข้อมูลส่วนตัวของคุณ
+personalSubMessage=จัดการข้อมูลพื้นฐานของคุณ
+
+authenticatorCode=รหัสสำหรับใช้ครั้งเดียว
+email=อีเมล
+firstName=ชื่อ
+givenName=ชื่อ
+fullName=ชื่อ-นามสกุล
+lastName=นามสกุล
+familyName=นามสกุล
+password=รหัสผ่าน
+currentPassword=รหัสผ่านปัจจุบัน
+passwordConfirm=ยืนยันรหัสผ่าน
+passwordNew=รหัสผ่านใหม่
+username=ชื่อผู้ใช้งาน
+address=ที่อยู่
+street=ถนน
+locality=เมืองหรือตำบล
+region=รัฐ จังหวัด หรือภูมิภาค
+postal_code=รหัสไปรษณีย์
+country=ประเทศ
+emailVerified=ตรวจสอบอีเมลแล้ว
+website=หน้าเว็บ
+phoneNumber=หมายเลขโทรศัพท์
+phoneNumberVerified=ตรวจสอบหมายเลขโทรศัพท์แล้ว
+gender=เพศ
+birthday=วันเกิด
+zoneinfo=โซนเวลา
+gssDelegationCredential=GSS Delegation Credential
+
+profileScopeConsentText=โปรไฟล์ผู้ใช้งาน
+emailScopeConsentText=ที่อยู่อีเมล
+addressScopeConsentText=ที่อยู่
+phoneScopeConsentText=หมายเลขโทรศัพท์
+offlineAccessScopeConsentText=การเข้าถึงแบบออฟไลน์
+samlRoleListScopeConsentText=บทบาทของฉัน
+rolesScopeConsentText=บทบาทผู้ใช้งาน
+
+role_admin=ผู้ดูแลระบบ
+role_realm-admin=ผู้ดูแลระบบ realm
+role_create-realm=สร้าง realm
+role_view-realm=ดู realm
+role_view-users=ดูผู้ใช้งาน
+role_view-applications=ดูแอปพลิเคชัน
+role_view-groups=ดูกลุ่ม
+role_view-clients=ดูไคลเอนต์
+role_view-events=ดูเหตุการณ์
+role_view-identity-providers=ดูผู้ให้บริการตัวตน
+role_view-consent=ดูการยินยอม
+role_manage-realm=จัดการ realm
+role_manage-users=จัดการผู้ใช้งาน
+role_manage-applications=จัดการแอปพลิเคชัน
+role_manage-identity-providers=จัดการผู้ให้บริการตัวตน
+role_manage-clients=จัดการไคลเอนต์
+role_manage-events=จัดการเหตุการณ์
+role_view-profile=ดูโปรไฟล์
+role_manage-account=จัดการบัญชี
+role_manage-account-links=จัดการลิงก์บัญชี
+role_manage-consent=จัดการการยินยอม
+role_read-token=อ่านโทเค็น
+role_offline-access=การเข้าถึงแบบออฟไลน์
+role_uma_authorization=ขออนุญาต
+client_account=บัญชี
+client_account-console=คอนโซลบัญชี
+client_security-admin-console=คอนโซลผู้ดูแลระบบความปลอดภัย
+client_admin-cli=CLI สำหรับผู้ดูแลระบบ
+client_realm-management=การจัดการ realm
+client_broker=ตัวแทน
+
+
+requiredFields=ช่องที่ต้องกรอกข้อมูล
+allFieldsRequired=ต้องกรอกข้อมูลทุกช่อง
+
+backToApplication=&laquo; กลับไปยังแอปพลิเคชัน
+backTo=กลับไปยัง {0}
+
+date=วันที่
+event=เหตุการณ์
+ip=IP
+client=ไคลเอนต์
+clients=ไคลเอนต์
+details=รายละเอียด
+started=เริ่มต้น
+lastAccess=การเข้าถึงครั้งสุดท้าย
+expires=หมดอายุ
+applications=แอปพลิเคชัน
+
+account=บัญชี
+federatedIdentity=Federated Identity
+authenticator=Authenticator
+device-activity=กิจกรรมของอุปกรณ์
+sessions=เซสชัน
+log=บันทึก
+
+application=แอปพลิเคชัน
+availableRoles=บทบาทที่มีอยู่
+grantedPermissions=การอนุญาตที่ได้รับ
+grantedPersonalInfo=ข้อมูลส่วนตัวที่ได้รับอนุญาต
+additionalGrants=การอนุญาตเพิ่มเติม
+action=การกระทำ
+inResource=ใน
+fullAccess=การเข้าถึงเต็มรูปแบบ
+offlineToken=โทเค็นแบบออฟไลน์
+revoke=ยกเลิกการอนุญาต
+
+configureAuthenticators=Authenticators ที่กำหนดค่าแล้ว
+mobile=มือถือ
+totpStep1=ติดตั้งแอปพลิเคชันใดแอปพลิเคชันหนึ่งต่อไปนี้บนมือถือของคุณ:
+totpStep2=เปิดแอปพลิเคชันและสแกนบาร์โค้ด:
+totpStep3=ใส่รหัสสำหรับใช้ครั้งเดียวจากแอปพลิเคชัน และคลิกบันทึกเพื่อสิ้นสุดการตั้งค่า
+totpStep3DeviceName=ระบุชื่ออุปกรณ์เพื่อช่วยให้คุณจัดการอุปกรณ์ OTP ของคุณได้สะดวกขึ้น
+
+totpManualStep2=เปิดแอปพลิเคชันและใส่รหัส:
+totpManualStep3=ใช้ค่าการกำหนดค่าต่อไปนี้หากแอปพลิเคชันอนุญาตให้ตั้งค่า:
+totpUnableToScan=ไม่สามารถสแกนได้?
+totpScanBarcode=สแกนบาร์โค้ด?
+
+totp.totp=Time-based
+totp.hotp=Counter-based
+
+totpType=ประเภท
+totpAlgorithm=ขั้นตอนวิธี
+totpDigits=หลัก
+totpInterval=ช่วงเวลา
+totpCounter=Counter
+totpDeviceName=ชื่อของอุปกรณ์
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+irreversibleAction=การกระทำนี้ไม่สามารถย้อนกลับได้
+deletingImplies=การลบบัญชีของคุณจะ:
+errasingData=ลบข้อมูลทั้งหมดของคุณ
+loggingOutImmediately=ออกจากระบบทันที
+accountUnusable=ไม่สามารถใช้แอปพลิเคชันด้วยบัญชีนี้ได้อีกต่อไป
+
+missingUsernameMessage=โปรดระบุชื่อผู้ใช้งาน
+missingFirstNameMessage=โปรดระบุชื่อ
+invalidEmailMessage=ที่อยู่อีเมลไม่ถูกต้อง
+missingLastNameMessage=โปรดระบุนามสกุล
+missingEmailMessage=โปรดระบุอีเมล
+missingPasswordMessage=โปรดระบุรหัสผ่าน
+notMatchPasswordMessage=รหัสผ่านไม่ตรงกัน
+invalidUserMessage=ผู้ใช้งานไม่ถูกต้อง
+updateReadOnlyAttributesRejectedMessage=ไม่สามารถอัพเดตแอตทริบิวต์ที่เป็นแบบอ่านเท่านั้น
+
+missingTotpMessage=โปรดระบุรหัสสำหรับใช้ครั้งเดียว
+missingTotpDeviceNameMessage=โปรดระบุชื่ออุปกรณ์
+invalidPasswordExistingMessage=รหัสผ่านที่มีอยู่ไม่ถูกต้อง
+invalidPasswordConfirmMessage=การยืนยันรหัสผ่านไม่ถูกต้อง
+invalidTotpMessage=รหัสสำหรับใช้ครั้งเดียวไม่ถูกต้อง
+
+usernameExistsMessage=ชื่อผู้ใช้งานมีอยู่แล้ว
+emailExistsMessage=อีเมลมีอยู่แล้ว
+
+readOnlyUserMessage=คุณไม่สามารถอัพเดตบัญชีของคุณได้ เนื่องจากเป็นบัญชีแบบอ่านอย่างเดียว
+readOnlyUsernameMessage=คุณไม่สามารถอัพเดตชื่อผู้ใช้งานของคุณได้ เนื่องจากเป็นบัญชีแบบอ่านอย่างเดียว
+readOnlyPasswordMessage=คุณไม่สามารถอัพเดตรหัสผ่านของคุณได้ เนื่องจากบัญชีของคุณเป็นบัญชีแบบอ่านอย่างเดียว
+
+successTotpMessage=กำหนดค่า Mobile authenticator แล้ว
+successTotpRemovedMessage=ลบ Mobile authenticator แล้ว
+
+successGrantRevokedMessage=ถอนการให้อนุญาตสำเร็จแล้ว
+
+accountUpdatedMessage=ได้อัพเดตบัญชีของคุณแล้ว
+accountPasswordUpdatedMessage=ได้อัพเดตรหัสผ่านของคุณแล้ว
+
+missingIdentityProviderMessage=ไม่ได้ระบุผู้ให้บริการตัวตน
+invalidFederatedIdentityActionMessage=การกระทำไม่ถูกต้องหรือไม่มี
+identityProviderNotFoundMessage=ไม่พบผู้ให้บริการตัวตนที่ระบุ
+federatedIdentityLinkNotActiveMessage=ตัวตนนี้ไม่ได้ใช้งานแล้ว
+federatedIdentityRemovingLastProviderMessage=คุณไม่สามารถลบ federated identity สุดท้ายได้เนื่องจากคุณไม่มีรหัสผ่าน
+identityProviderRedirectErrorMessage=ล้มเหลวในการเปลี่ยนเส้นทางไปยังผู้ให้บริการตัวตน
+identityProviderRemovedMessage=ลบผู้ให้บริการตัวตนเรียบร้อยแล้ว
+identityProviderAlreadyLinkedMessage=Federated identity ที่ส่งคืนโดย {0} ได้เชื่อมโยงกับผู้ใช้งานอื่นแล้ว
+staleCodeAccountMessage=หน้าหมดอายุแล้ว โปรดลองอีกครั้ง
+consentDenied=การยินยอมถูกปฏิเสธ
+access-denied-when-idp-auth=การเข้าถึงถูกปฏิเสธเมื่อพิสูจน์ตัวจริงด้วย {0}
+
+accountDisabledMessage=บัญชีถูกปิดใช้งาน กรุณาติดต่อผู้ดูแลระบบของคุณ
+
+accountTemporarilyDisabledMessage=บัญชีถูกปิดใช้งานชั่วคราว กรุณาติดต่อผู้ดูแลระบบของคุณหรือลองอีกครั้งในภายหลัง
+invalidPasswordMinLengthMessage=รหัสผ่านไม่ถูกต้อง: ความยาวขั้นต่ำ {0}
+invalidPasswordMaxLengthMessage=รหัสผ่านไม่ถูกต้อง: ความยาวสูงสุด {0}
+invalidPasswordMinLowerCaseCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีอักขระพิมพ์เล็กอย่างน้อย {0} ตัว
+invalidPasswordMinDigitsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีจำนวนเลขอย่างน้อย {0} หลัก
+invalidPasswordMinUpperCaseCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีอักขระพิมพ์ใหญ่อย่างน้อย {0} ตัว
+invalidPasswordMinSpecialCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีอักขระพิเศษอย่างน้อย {0} ตัว
+invalidPasswordNotUsernameMessage=รหัสผ่านไม่ถูกต้อง: จะต้องไม่ตรงกับชื่อผู้ใช้งาน
+invalidPasswordNotEmailMessage=รหัสผ่านไม่ถูกต้อง: จะต้องไม่ตรงกับอีเมล
+invalidPasswordRegexPatternMessage=รหัสผ่านไม่ถูกต้อง: ไม่ผ่าน regex pattern
+invalidPasswordHistoryMessage=รหัสผ่านไม่ถูกต้อง: จะต้องไม่ซ้ำกับรหัสผ่านเดิมที่ผ่านมา {0} ครั้ง
+invalidPasswordBlacklistedMessage=รหัสผ่านไม่ถูกต้อง: รหัสผ่านอยู่ในบัญชีดำ
+invalidPasswordGenericMessage=รหัสผ่านไม่ถูกต้อง: รหัสผ่านใหม่ไม่ตรงตามนโยบายการตั้งรหัสผ่าน
+
+# Authorization
+myResources=ทรัพยากรของฉัน
+myResourcesSub=ทรัพยากรของฉัน
+doDeny=ปฏิเสธ
+doRevoke=ถอนการอนุมัติ
+doApprove=อนุมัติ
+doRemoveSharing=ลบการแบ่งปัน
+doRemoveRequest=ลบคำขอ
+peopleAccessResource=ผู้ที่มีสิทธิ์เข้าถึงทรัพยากรนี้
+resourceManagedPolicies=การอนุญาตให้เข้าถึงทรัพยากรนี้
+resourceNoPermissionsGrantingAccess=ไม่มีการอนุญาตให้เข้าถึงทรัพยากรนี้
+anyAction=การกระทำใด ๆ
+description=คำอธิบาย
+name=ชื่อ
+scopes=ขอบเขต
+resource=ทรัพยากร
+user=ผู้ใช้งาน
+peopleSharingThisResource=ผู้ที่แบ่งปันทรัพยากรนี้
+shareWithOthers=แบ่งปันกับผู้อื่น
+needMyApproval=ต้องได้รับการอนุมัติจากฉัน
+requestsWaitingApproval=คำขอของคุณที่รอการอนุมัติ
+icon=ไอคอน
+requestor=ผู้ร้องขอ
+owner=เจ้าของ
+resourcesSharedWithMe=ทรัพยากรที่แบ่งปันกับฉัน
+permissionRequestion=คำขออนุญาต
+permission=การอนุญาต
+shares=การแบ่งปัน
+notBeingShared=ทรัพยากรนี้ไม่ได้แบ่งปัน
+notHaveAnyResource=คุณไม่มีทรัพยากรใด ๆ
+noResourcesSharedWithYou=ไม่มีทรัพยากรใด ๆ ถูกแบ่งปันกับคุณ
+havePermissionRequestsWaitingForApproval=คุณมีคำขออนุญาต {0} รายการที่รอการอนุมัติ
+clickHereForDetails=คลิกที่นี่เพื่อดูรายละเอียด
+resourceIsNotBeingShared=ทรัพยากรไม่ได้ถูกแบ่งปัน
+
+# Applications
+applicationName=ชื่อ
+applicationType=ประเภทแอปพลิเคชัน
+applicationInUse=แอปพลิเคชันที่ใช้งานอยู่เท่านั้น
+clearAllFilter=ล้างตัวกรองทั้งหมด
+activeFilters=ตัวกรองที่ใช้งานอยู่
+filterByName=กรองตามชื่อ ...
+allApps=แอปพลิเคชันทั้งหมด
+internalApps=แอปพลิเคชันภายใน
+thirdpartyApps=แอปพลิเคชันของบุคคลที่สาม
+appResults=ผลลัพธ์
+clientNotFoundMessage=ไม่พบไคลเอนต์
+
+# Linked account
+authorizedProvider=ผู้ให้บริการที่ได้รับการอนุญาต
+authorizedProviderMessage=ผู้ให้บริการที่ได้รับอนุญาตให้เชื่อมโยงกับบัญชีของคุณ
+identityProvider=ผู้ให้บริการตัวตน
+identityProviderMessage=เพื่อเชื่อมโยงบัญชีของคุณกับผู้ให้บริการตัวตนที่คุณกำหนดค่าไว้
+socialLogin=การเข้าสู่ระบบด้วยโซเชียลมีเดีย
+userDefined=ผู้ใช้งานที่กำหนดไว้
+removeAccess=ลบการเข้าถึง
+removeAccessMessage=คุณจะต้องให้อนุญาตใหม่ หากคุณต้องการใช้บัญชีแอปนี้
+
+#Authenticator
+authenticatorStatusMessage=การตรวจสอบสิทธิ์สองปัจจัยกำลัง
+authenticatorFinishSetUpTitle=การตรวจสอบสิทธิ์สองปัจจัยของคุณ
+authenticatorFinishSetUpMessage=ทุกครั้งที่คุณล็อกอินเข้าสู่บัญชี Keycloak ของคุณ คุณจะถูกขอให้ใส่รหัสผ่านสำหรับการตรวจสอบสิทธิ์สองปัจจัย
+authenticatorSubTitle=ตั้งค่าการตรวจสอบสิทธิ์สองปัจจัย
+authenticatorSubMessage=เพื่อเพิ่มความปลอดภัยของบัญชีของคุณ กรุณาเปิดใช้งานวิธีการตรวจสอบสิทธิ์สองปัจจัยที่มีให้
+authenticatorMobileTitle=Mobile Authenticator
+authenticatorMobileMessage=ใช้ Mobile Authenticator เพื่อรับรหัสยืนยันการตรวจสอบสิทธิ์สองปัจจัย
+authenticatorMobileFinishSetUpMessage=Authenticator ได้ถูกผูกกับโทรศัพท์ของคุณแล้ว
+authenticatorActionSetup=ตั้งค่า
+authenticatorSMSTitle=SMS Code
+authenticatorSMSMessage=Keycloak จะส่งรหัสยืนยันไปยังโทรศัพท์ของคุณเพื่อตรวจสอบสิทธิ์สองปัจจัย
+authenticatorSMSFinishSetUpMessage=ข้อความถูกส่งไปยัง
+authenticatorDefaultStatus=ค่าเริ่มต้น
+authenticatorChangePhone=เปลี่ยนหมายเลขโทรศัพท์
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=การตั้งค่า Mobile Authenticator
+smscodeIntroMessage=ใส่หมายเลขโทรศัพท์ของคุณ รหัสยืนยันจะถูกส่งไปยังโทรศัพท์ของคุณ
+mobileSetupStep1=ติดตั้งแอปพลิเคชัน authenticator บนโทรศัพท์ของคุณ แอปพลิเคชันที่แสดงไว้ในนี้ได้รับการสนับสนุน
+mobileSetupStep2=เปิดแอปพลิเคชันและสแกนบาร์โค้ด:
+mobileSetupStep3=ใส่รหัสผ่านครั้งเดียวที่แอปพลิเคชันให้และคลิกบันทึกเพื่อสิ้นสุดการตั้งค่า
+scanBarCode=ต้องการสแกนบาร์โค้ด?
+enterBarCode=ใส่รหัสแบบใช้ครั้งเดียว
+doCopy=คัดลอก
+doFinish=สิ้นสุด
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=การตั้งค่า SMS Code
+chooseYourCountry=เลือกประเทศของคุณ
+enterYourPhoneNumber=ใส่หมายเลขโทรศัพท์ของคุณ
+sendVerficationCode=ส่งรหัสยืนยัน
+enterYourVerficationCode=ใส่รหัสยืนยันของคุณ
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=การตั้งค่ารหัสกู้คืน
+realmName=Realm
+doDownload=ดาวน์โหลด
+doPrint=พิมพ์
+generateNewBackupCodes=สร้างรหัสกู้คืนใหม่
+backtoAuthenticatorPage=กลับไปยังหน้า Authenticator
+
+
+#Resources
+resources=ทรัพยากร
+sharedwithMe=แบ่งปันกับฉัน
+share=แบ่งปัน
+sharedwith=แบ่งปันกับ
+accessPermissions=การอนุญาตให้เข้าถึง
+permissionRequests=คำขอการอนุญาต
+approve=อนุมัติ
+approveAll=อนุมัติทั้งหมด
+people=ผู้คน
+perPage=ต่อหน้า
+currentPage=หน้าปัจจุบัน
+sharetheResource=แบ่งปันทรัพยากร
+group=กลุ่ม
+selectPermission=เลือกการอนุญาต
+addPeople=เพิ่มผู้คนเพื่อแบ่งปันทรัพยากรด้วย
+addTeam=เพิ่มทีมเพื่อแบ่งปันทรัพยากรด้วย
+myPermissions=การอนุญาตของฉัน
+waitingforApproval=รอการอนุมัติ
+anyPermission=การอนุญาตใด ๆ
+
+# Openshift messages
+openshift.scope.user_info=ข้อมูลผู้ใช้งาน
+openshift.scope.user_check-access=ข้อมูลการเข้าถึงผู้ใช้งาน
+openshift.scope.user_full=การเข้าถึงแบบเต็ม
+openshift.scope.list-projects=รายการโครงการ
+
+error-invalid-value=ค่าไม่ถูกต้อง
+error-invalid-blank=โปรดระบุค่า
+error-empty=โปรดระบุค่า
+error-invalid-length=ลักษณะประจำ {0} จะต้องมีความยาวระหว่าง {1} และ {2}
+error-invalid-length-too-short=ลักษณะประจำ {0} จะต้องมีความยาวขั้นต่ำ {1}
+error-invalid-length-too-long=ลักษณะประจำ {0} จะต้องมีความยาวสูงสุด {2}
+error-invalid-email=ที่อยู่อีเมลไม่ถูกต้อง
+error-invalid-number=จำนวนไม่ถูกต้อง
+error-number-out-of-range=ลักษณะประจำ {0} จะต้องเป็นจำนวนระหว่าง {1} และ {2}
+error-number-out-of-range-too-small=ลักษณะประจำ {0} จะต้องมีค่าขั้นต่ำ {1}
+error-number-out-of-range-too-big=ลักษณะประจำ {0} จะต้องมีค่าสูงสุด {2}
+error-pattern-no-match=ค่าไม่ถูกต้อง
+error-invalid-uri=URL ไม่ถูกต้อง
+error-invalid-uri-scheme=scheme URL ไม่ถูกต้อง
+error-invalid-uri-fragment=fragment URL ไม่ถูกต้อง
+error-user-attribute-required=โปรดระบุลักษณะประจำ {0}
+error-invalid-date=วันที่ไม่ถูกต้อง
+error-user-attribute-read-only=เขตข้อมูล {0} เป็นแบบอ่านอย่างเดียว
+error-username-invalid-character=ชื่อผู้ใช้งานมีอักขระไม่ถูกต้อง
+error-person-name-invalid-character=ชื่อมีอักขระไม่ถูกต้อง
diff --git a/themes/custom-theme-template/account/messages/messages_tr.properties b/themes/custom-theme-template/account/messages/messages_tr.properties
new file mode 100644
index 0000000000000000000000000000000000000000..45f4dab6afd1a054519357d5d9c5c07f4ccdfadc
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_tr.properties
@@ -0,0 +1,317 @@
+doSave=Kaydet
+doCancel=İptal
+doLogOutAllSessions=Tüm Oturumları Kapat
+doRemove=Sil
+doAdd=Ekle
+doSignOut=Çıkış
+doLogIn=Oturum aç
+doLink=Bağlantı
+
+
+editAccountHtmlTitle=Hesabım
+personalInfoHtmlTitle=Kişisel bilgi
+federatedIdentitiesHtmlTitle=Değiştirilen Kimlikler
+accountLogHtmlTitle=Kullanıcı Logları
+changePasswordHtmlTitle=Şifre Değiştirme
+deviceActivityHtmlTitle=Cihaz Etkinliği
+sessionsHtmlTitle=Oturum
+accountManagementTitle=Keycloak Kullanıcı Hesabı Yönetimi
+authenticatorTitle=Kimlik Doğrulama
+applicationsHtmlTitle=Uygulama
+linkedAccountsHtmlTitle=Bağlantılı Hesaplar
+
+accountManagementWelcomeMessage=Keycloak Hesap Yönetimine Hoş Geldiniz
+personalInfoIntroMessage=Temel bilgilerinizi yönetin
+accountSecurityTitle=Hesap Güvenliği
+accountSecurityIntroMessage=Şifrenizi ve hesap erişiminizi kontrol edin
+applicationsIntroMessage=Hesabınıza erişmek için uygulama izninizi takip edin ve yönetin
+resourceIntroMessage=Kaynaklarınızı ekip üyeleri arasında paylaşın
+passwordLastUpdateMessage=Şifreniz güncellendi
+updatePasswordTitle=Şifre güncelle
+updatePasswordMessageTitle=Güçlü bir şifre seçtiğinizden emin olun
+updatePasswordMessage=Güçlü bir şifre, sayılar, harfler ve sembollerin karışımından oluşmalıdır. Tahmin etmesi zor ve gerçek bir kelimeye benzemeyen şifre sadece bu hesap için kullanılır.
+personalSubTitle=Kişisel Bilgileriniz
+personalSubMessage=Bu temel bilgileri yönetin: adınız, soyadınız ve e-posta adresiniz
+
+authenticatorCode=Kimlik Doğrulama Kodu
+email=E-Mail
+firstName=Ad
+givenName=Ad
+fullName=Ad Soyad
+lastName=Soyad
+familyName=Soyad
+password=Şifre
+currentPassword=Şimdiki Şifre
+passwordConfirm=Şifre Doğrulama
+passwordNew=Yeni Şifre
+username=Kullanıcı Adı
+address=Adres
+street=Cadde
+region=Bölge
+postal_code=Posta Kodu
+locality=Şehir
+country=Ülke
+emailVerified=E-Mail Doğrulandı
+gssDelegationCredential=GSS Yetki Bilgisi
+
+profileScopeConsentText=Kullanıcı profili
+emailScopeConsentText=Email adresi
+addressScopeConsentText=Adres
+phoneScopeConsentText=Telefon numarası
+offlineAccessScopeConsentText=Çevrimdışı Erişim
+samlRoleListScopeConsentText=Rollerim
+rolesScopeConsentText=Kullanıcı rolleri
+
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Realm Oluştur
+role_view-realm=Realm görüntüle
+role_view-users=Kullanıcıları görüntüle
+role_view-applications=Uygulamaları görüntüle
+role_view-clients=İstemci görüntüle
+role_view-events=Olay görüntüle
+role_view-identity-providers=Kimlik Sağlayıcılar
+role_manage-realm=Realm yönet
+role_manage-users=Kullanıcıları yönet
+role_manage-applications=Uygulamaları yönet
+role_manage-identity-providers=Kimlik Sağlayıcıları Yönet
+role_manage-clients=İstemci yönet
+role_manage-events=Olay yönet
+role_view-profile=Profilleri görüntüle
+role_manage-account=Profilleri Yönet
+role_manage-account-links=Profil bağlantılarını yönet
+role_read-token=Token oku
+role_offline-access=Çevirimdışı Yetki
+role_uma_authorization=İzinleri Al
+client_account=Müşteri Hesabı
+client_security-admin-console=Güvenlik Yönetici Konsolu
+client_admin-cli=Admin CLI
+client_realm-management=Realm-Management
+client_broker=Broker
+
+requiredFields=Zorunlu Alanlar
+allFieldsRequired=Tüm Alanlar Zorunlu
+
+backToApplication=&laquo; Uygulamaya Dön
+backTo=Geri Dön {0}
+
+date=Gün
+event=Olay
+ip=IP
+client=İstemci
+clients=İstemciler
+details=Detaylar
+started=Başlangıç Tarihi
+lastAccess=Son Erişim Tarihi
+expires=Son Kullanma Tarihi
+applications=Uygulama
+
+account=Hesap
+federatedIdentity=Federal Kimlik
+authenticator=Kimlik Doğrulama
+device-activity=Cihaz Etkinliği
+sessions=Oturum
+log=Log
+
+application=Uygulama
+availablePermissions=Kullanılabilir İzinler
+availableRoles=Kullanılabilir Roller
+grantedPermissions=Verilen İzinler
+grantedPersonalInfo=İzin Verilen Kişisel Bilgiler
+additionalGrants=Ek İzinler
+action=Aksiyon
+inResource=Kaynak
+fullAccess=Tam Yetki
+offlineToken=Çevirimdışı-Token
+revoke=İzni İptal et
+
+configureAuthenticators=Çoklu Kimlik Doğrulama
+mobile=Mobil
+totpStep1=Akıllı Telefonunuza aşağıdaki uygulamalardan birini yükleyin:
+totpStep2=Uygulamayı açın ve barkodu okutun.
+totpStep3=Uygulama tarafından oluşturulan tek seferlik kodu girin ve Kaydet''i tıklayın.
+
+totpManualStep2=Uygulamayı açın ve aşağıdaki anahtarı girin.
+totpManualStep3=Bunları uygulama için özelleştirebilirseniz aşağıdaki yapılandırma değerlerini kullanın:
+totpUnableToScan=Barkodu tarayamıyor musunuz?
+totpScanBarcode=Barkod Tara?
+
+totp.totp=Zaman bazlı (time-based)
+totp.hotp=Sayaç tabanlı (counter-based)
+
+totpType=Tip
+totpAlgorithm=Algoritma
+totpDigits=Basamak
+totpInterval=Aralık
+totpCounter=Sayaç
+
+missingUsernameMessage=Lütfen bir kullanıcı adı giriniz.
+missingFirstNameMessage=Lütfen bir ad girin.
+invalidEmailMessage=Geçersiz e-posta adresi.
+missingLastNameMessage=Lütfen bir soyadı giriniz.
+missingEmailMessage=Lütfen bir e-mail adresi giriniz.
+missingPasswordMessage=Lütfen bir şifre giriniz.
+notMatchPasswordMessage=Şifreler aynı değil.
+
+missingTotpMessage=Lütfen tek seferlik kodu girin.
+invalidPasswordExistingMessage=Mevcut şifre geçersiz.
+invalidPasswordConfirmMessage=Şifre onayı aynı değil.
+invalidTotpMessage=Geçersiz tek seferlik kod.
+
+usernameExistsMessage=Kullanıcı adı zaten mevcut.
+emailExistsMessage=E-posta adresi zaten mevcut.
+
+readOnlyUserMessage=Yazma korumalı olduğundan kullanıcı hesabınızı değiştiremezsiniz.
+readOnlyUsernameMessage=Yazma korumalı olduğundan kullanıcı adınızı değiştiremezsiniz.
+readOnlyPasswordMessage=Yazma korumalı olduğundan şifrenizi değiştiremezsiniz.
+
+successTotpMessage=Çoklu kimlik doğrulaması başarıyla yapılandırıldı.
+successTotpRemovedMessage=Çoklu kimlik doğrulama başarıyla kaldırıldı.
+
+successGrantRevokedMessage=İzin başarıyla iptal edildi.
+
+accountUpdatedMessage=Kullanıcı hesabınız güncellendi.
+accountPasswordUpdatedMessage=Şifreniz güncellendi.
+
+missingIdentityProviderMessage=Kimlik Sağlayıcısı belirtilmemiş.
+invalidFederatedIdentityActionMessage=Geçersiz veya eksik eylem.
+identityProviderNotFoundMessage=Belirtilen Kimlik Sağlayıcı bulunamadı.
+federatedIdentityLinkNotActiveMessage=Bu kimlik artık aktif değil.
+federatedIdentityRemovingLastProviderMessage=Şifreniz olmadığı için son girişi kaldıramazsınız.
+identityProviderRedirectErrorMessage=Kimlik sağlayıcıya iletilirken hata oluştu.
+identityProviderRemovedMessage=Kimlik Sağlayıcısı başarıyla kaldırıldı.
+identityProviderAlreadyLinkedMessage=Değiştirilmiş {0} kimliği başka bir kullanıcıya atanmış.
+staleCodeAccountMessage=Bu sayfa artık geçerli değil, lütfen tekrar deneyin.
+consentDenied=Onay reddedildi.
+
+accountDisabledMessage=Hesabınız kilitlendi, lütfen yöneticiyle iletişime geçin.
+
+accountTemporarilyDisabledMessage=Hesabınız geçici olarak kilitlendi, lütfen yöneticiyle iletişime geçin veya daha sonra tekrar deneyin.
+invalidPasswordMinLengthMessage=Geçersiz Şifre: En az {0} karakter uzunluğunda olmalı.
+invalidPasswordMinLowerCaseCharsMessage=Geçersiz Şifre \: En az {0} küçük harf içermelidir.
+invalidPasswordMinDigitsMessage=Geçersiz Şifre: En az {0} sayı(lar) içermelidir.
+invalidPasswordMinUpperCaseCharsMessage=Geçersiz Şifre: En az {0} büyük harf içermelidir.
+invalidPasswordMinSpecialCharsMessage=Geçersiz Şifre: En az {0} özel karakter içermelidir.
+invalidPasswordNotUsernameMessage=Geçersiz Şifre: Kullanıcı adıyla aynı olamaz.
+invalidPasswordRegexPatternMessage=Geçersiz Şifre: Regex Patternine uygun değil.
+invalidPasswordHistoryMessage=Geçersiz Şifre: Son {0} şifreden biri olamaz.
+invalidPasswordBlacklistedMessage=Geçersiz Şifre: Şifre bloklanmış şifreler listesindedir (kara liste).
+invalidPasswordGenericMessage=Geçersiz Şifre: Yeni şifre, şifre kurallarını ihlal ediyor.
+
+
+
+# Authorization
+myResources=Kaynaklarım
+myResourcesSub=Kaynaklarım
+doDeny=Reddet
+doRevoke=Geri al
+doApprove=Onayla
+doRemoveSharing=Paylaşımı Kaldır
+doRemoveRequest=İsteği Kaldır
+peopleAccessResource=Bu kaynağa erişimi olan kişiler
+resourceManagedPolicies=Bu kaynağa erişim izni veren izinler
+resourceNoPermissionsGrantingAccess=Bu kaynağa erişim izni verilmeyen izin yok
+anyAction=Herhangi bir eylem
+description=Açıklama
+name=İsim
+scopes=Kapsam
+resource=Kaynak
+user=Kullanıcı
+peopleSharingThisResource=Bu kaynağı paylaşan kullanıcılar
+shareWithOthers=Başkalarıyla paylaş
+needMyApproval=Onayım gerekli
+requestsWaitingApproval=Talepleriniz onay bekliyor
+icon=Icon
+requestor=Talep eden
+owner=Sahip
+resourcesSharedWithMe=Kaynaklar benimle paylaşıldı
+permissionRequestion=İzin Talepleri
+permission=İzin
+shares=Paylaşım(lar)
+
+# Applications
+applicationName=İsim
+applicationType=Uygulama Tipi
+applicationInUse=Yalnızca uygulama içi kullanım
+clearAllFilter=Tüm filtreleri temizle
+activeFilters=Aktif filtreler
+filterByName=İsme Göre Filtrele ...
+allApps=Bütün uygulamalar
+internalApps=İç uygulamalar
+thirdpartyApps=Üçüncü parti uygulamalar
+appResults=Sonuçlar
+
+# Linked account
+authorizedProvider=Yetkili Tedarikçi
+authorizedProviderMessage=Yetkili Sağlayıcılar hesabınızla bağlantılı
+identityProvider=Kimlik Sağlayıcısı
+identityProviderMessage=Hesabınızı yapılandırdığınız kimlik sağlayıcılarıyla bağlamak için
+socialLogin=Sosyal Giriş
+userDefined=Kullanıcı tanımlı
+removeAccess=Erişimi Kaldır
+removeAccessMessage=Bu uygulama hesabını kullanmak istiyorsanız tekrar erişim vermeniz gerekir.
+
+#Authenticator
+authenticatorStatusMessage=İki faktörlü kimlik doğrulama aktif
+authenticatorFinishSetUpTitle=İki Faktörlü Doğrulama
+authenticatorFinishSetUpMessage=Keycloak hesabınızda her oturum açtığınızda, iki faktörlü bir doğrulama kodu girmeniz istenecektir.
+authenticatorSubTitle=İki Faktörlü Kimlik Doğrulamayı Ayarlama
+authenticatorSubMessage=Hesabınızın güvenliğini artırmak için mevcut iki faktörlü kimlik doğrulama yöntemlerinden en az birini etkinleştirin.
+authenticatorMobileTitle=Mobil Kimlik Doğrulayıcı
+authenticatorMobileMessage=Doğrulama kodlarını iki faktörlü kimlik doğrulama olarak almak için mobil Doğrulayıcı''yı kullanın.
+authenticatorMobileFinishSetUpMessage=Doğrulayıcı, telefonunuza bağlı.
+authenticatorActionSetup=Kur
+authenticatorSMSTitle=SMS Kodu
+authenticatorSMSMessage=Keycloak, doğrulama kodunu telefonunuza iki faktörlü kimlik doğrulaması olarak gönderecektir.
+authenticatorSMSFinishSetUpMessage=Kısa mesajlar gönderilir
+authenticatorDefaultStatus=Varsayılan
+authenticatorChangePhone=Telefon Numarasını Değiştir
+
+#Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Mobil Kimlik Doğrulama Kurulumu
+smscodeIntroMessage=Telefon numaranızı girin ve telefonunuza bir doğrulama kodu gönderilecektir.
+mobileSetupStep1=Telefonunuza bir kimlik doğrulama uygulaması yükleyin. Burada listelenen uygulamalar desteklenmektedir.
+mobileSetupStep2=Uygulamayı açın ve barkodu tarayın.
+mobileSetupStep3=Uygulama tarafından sağlanan tek seferlik kodu girin ve kurulumu tamamlamak için Kaydet''e tıklayın.
+scanBarCode=Barkodu taramak ister misiniz?
+enterBarCode=Tek seferlik kodu girin
+doCopy=Kopyala
+doFinish=Bitir
+
+#Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=SMS Kodu Kurulumu
+chooseYourCountry=Ülkenizi seçin
+enterYourPhoneNumber=Telefon numaranızı girin
+sendVerficationCode=Doğrulama kodu Gönder
+enterYourVerficationCode=Onaylama kodunu girin
+
+#Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Yedekleme Kodları Kurulumu
+realmName=Realm
+doDownload=İndir
+doPrint=Yazdır
+generateNewBackupCodes=Yeni Yedekleme Kodları Oluştur
+backtoAuthenticatorPage=Kimlik Doğrulayıcı Sayfasına Geri Dön
+
+#Resources
+resources=Kaynaklar
+sharedwithMe=Benimle paylaştı
+share=Paylaşım
+sharedwith=İle paylaştı
+accessPermissions=Erişim İzinleri
+permissionRequests=İzin İstekleri
+approve=Onayla
+approveAll=Tümünü onayla
+people=İnsanlar
+perPage=Sayfa başına
+currentPage=Geçerli sayfa
+sharetheResource=Kaynağı paylaş
+group=Grup
+selectPermission=İzin Seç
+addPeople=Kaynağınızı paylaşmak için kullanıcı ekleyin
+addTeam=Kaynağınızı paylaşmak için ekip ekleyin
+myPermissions=İzinlerim
+waitingforApproval=Onay bekleniyor
+anyPermission=Herhangi bir izin
+
+locale_fa=فارسی
diff --git a/themes/custom-theme-template/account/messages/messages_uk.properties b/themes/custom-theme-template/account/messages/messages_uk.properties
new file mode 100755
index 0000000000000000000000000000000000000000..4457bf5a6e3628bc804de25d837d6fcf8aa887ad
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_uk.properties
@@ -0,0 +1,383 @@
+doSave=Зберегти
+doCancel=Скасувати
+doLogOutAllSessions=Завершити усі сесії
+doRemove=Видалити
+doAdd=Додати
+doSignOut=Вийти
+doLogIn=Увійти
+doLink=Зв''язати
+noAccessMessage=Доступ заборонено
+
+personalInfoSidebarTitle=Особисті дані
+accountSecuritySidebarTitle=Безпека облікового запису
+signingInSidebarTitle=Вхід
+deviceActivitySidebarTitle=Активні пристрої
+linkedAccountsSidebarTitle=Зв''язані облікові записи
+
+editAccountHtmlTitle=Редагувати обліковий запис
+personalInfoHtmlTitle=Особисті дані
+federatedIdentitiesHtmlTitle=Федеративні ідентифікатори
+accountLogHtmlTitle=Журнал облікового запису
+changePasswordHtmlTitle=Змінити пароль
+deviceActivityHtmlTitle=Активні пристрої
+sessionsHtmlTitle=Сесії
+accountManagementTitle=Керування обліковим записом
+authenticatorTitle=Автентифікатор
+applicationsHtmlTitle=Застосунки
+linkedAccountsHtmlTitle=Зв''язані облікові записи
+
+accountManagementWelcomeMessage=Ласкаво просимо до керування Вашим обліковим записом
+personalInfoIntroMessage=Керування вашою основною інформацією
+accountSecurityTitle=Безпека облікового запису
+accountSecurityIntroMessage=Зміна паролю доступу до облікового запису
+applicationsIntroMessage=Відстежуйте та керуйте дозволом Вашого застосунку і доступом до Вашого облікового запису
+resourceIntroMessage=Поділіться своїми ресурсами між членами команди
+passwordLastUpdateMessage=Ваш пароль змінено
+updatePasswordTitle=Змінити пароль
+updatePasswordMessageTitle=Переконайтеся, що ви вибрали надійний пароль
+updatePasswordMessage=Надійний пароль містить поєднання цифр, літер і символів. Його важко вгадати, він не схожий на справжнє слово та використовується лише для цього облікового запису.
+personalSubTitle=Ваша особиста інформація
+personalSubMessage=Керування своєю основною інформацією.
+
+authenticatorCode=Одноразовий код
+email=Електронна пошта
+firstName=Ім''я
+givenName=Ім''я
+fullName=Повне ім''я
+lastName=Прізвище
+familyName=Прізвище
+password=Пароль
+currentPassword=Поточний пароль
+passwordConfirm=Підтвердження
+passwordNew=Новий пароль
+username=Ім''я користувача
+address=Адреса
+street=Вулиця
+locality=Місто
+region=Область, або регіон
+postal_code=Поштовий індекс
+country=Країна
+emailVerified=Адреса електронної пошти підтверджена
+website=Веб-сторінка
+phoneNumber=Номер телефону
+phoneNumberVerified=Номер телефону підтверджено
+gender=Стать
+birthday=Дата народження
+zoneinfo=Часовий пояс
+gssDelegationCredential=Делегування облікових даних через GSS
+
+profileScopeConsentText=Профіль користувача
+emailScopeConsentText=Адреса електронної пошти
+addressScopeConsentText=Адреса
+phoneScopeConsentText=Номер телефону
+offlineAccessScopeConsentText=Доступ офлайн
+samlRoleListScopeConsentText=Мої ролі
+rolesScopeConsentText=Ролі користувача
+
+role_admin=Адміністратор
+role_realm-admin=Realm-адміністратор
+role_create-realm=Створити Realm
+role_view-realm=Перегляд Realm
+role_view-users=Перегляд користувачів
+role_view-applications=Перегляд застосунків
+role_view-groups=Перегляд груп
+role_view-clients=Перегляд клієнтів
+role_view-events=Перегляд подій
+role_view-identity-providers=Перегляд провайдерів облікових записів
+role_view-consent=Перегляд згод
+role_manage-realm=Керування Realm
+role_manage-users=Керування користувачами
+role_manage-applications=Керування застосунками
+role_manage-identity-providers=Керування провайдерами облікових записів
+role_manage-clients=Керування клієнтами
+role_manage-events=Керування подіями
+role_view-profile=Переглянути профіль
+role_manage-account=Керування обліковим записом
+role_manage-account-links=Керування зв''язаними обліковими записами
+role_manage-consent=Керування згодами
+role_read-token=Перегляд токенів
+role_offline-access=Офлайн доступ
+role_uma_authorization=Отримання дозволів
+client_account=Обліковий запис
+client_account-console=Консоль облікового запису
+client_security-admin-console=Консоль адміністратора безпеки
+client_admin-cli=Admin CLI
+client_realm-management=Керування realm
+client_broker=Брокер
+
+
+requiredFields=Обов''язкові поля
+allFieldsRequired=Усі поля обов''язкові
+
+backToApplication=&laquo; Повернутися до застосунку
+backTo=Повернутися до {0}
+
+date=Дата
+event=Подія
+ip=IP
+client=Клієнт
+clients=Клієнти
+details=Деталі
+started=Почато
+lastAccess=Останній доступ
+expires=Закінчується
+applications=Застосунки
+
+account=Обліковий запис
+federatedIdentity=Федеративний ідентифікатор
+authenticator=Автентифікатор
+device-activity=Активні пристрої
+sessions=Сесії
+log=Журнал
+
+application=Застосунок
+availableRoles=Доступні ролі
+grantedPermissions=Надані дозволи
+grantedPersonalInfo=Надана особиста інформація
+additionalGrants=Додаткові дозволи
+action=Дія
+inResource=у
+fullAccess=Повний доступ
+offlineToken=Офлайн токен
+revoke=Відкликати дозвіл
+
+configureAuthenticators=Налаштовані автентифікатори
+mobile=Мобільний
+totpStep1=Встановіть один з наступних застосунків на свій мобільний телефон:
+totpStep2=Відкрийте застосунок та відскануйте штрих-код:
+totpStep3=Введіть одноразовий код, наданий застосунком, і натисніть «Зберегти», щоб завершити налаштування.
+totpStep3DeviceName=Введіть назву пристрою, щоб допомогти Вам керувати OTP-пристроями.
+
+totpManualStep2=Відкрийте застосунок та введіть ключ:
+totpManualStep3=Використовуйте такі значення конфігурації, якщо застосунок дозволяє їх установку:
+totpUnableToScan=Неможливо сканувати?
+totpScanBarcode=Сканувати штрих-код?
+
+totp.totp=На основі часу
+totp.hotp=На основі лічильника
+
+totpType=Тип
+totpAlgorithm=Алгоритм
+totpDigits=Цифри
+totpInterval=Інтервал
+totpCounter=Лічильник
+totpDeviceName=Назва пристрою
+
+totpAppFreeOTPName=Безкоштовний OTP
+totpAppGoogleName=Автентифікатор Google
+totpAppMicrosoftAuthenticatorName=Автентифікатор Microsoft
+
+irreversibleAction=Ця дія незворотна
+deletingImplies=Видалення вашого облікового запису передбачає:
+errasingData=Стирання всіх ваших даних
+loggingOutImmediately=Негайний вихід із системи
+accountUnusable=Будь-яке подальше використання застосунку буде неможливим з цим обліковим записом
+
+missingUsernameMessage=Будь ласка, вкажіть ім''я користувача.
+missingFirstNameMessage=Будь ласка, вкажіть ім''я.
+invalidEmailMessage=Будь ласка, вкажіть дійсну адресу електронної пошти.
+missingLastNameMessage=Будь ласка, вкажіть прізвище.
+missingEmailMessage=Будь ласка, вкажіть адресу електронної пошти.
+missingPasswordMessage=Будь ласка, вкажіть пароль.
+notMatchPasswordMessage=Паролі не збігаються.
+invalidUserMessage=Невірний користувач
+updateReadOnlyAttributesRejectedMessage=Оновлення атрибута відхилено, оскільки він доступний лише для читання
+
+missingTotpMessage=Будь ласка, вкажіть код автентифікатора.
+missingTotpDeviceNameMessage=Будь ласка, вкажіть назву пристрою.
+invalidPasswordExistingMessage=Невірний існуючий пароль.
+invalidPasswordConfirmMessage=Пароль підтвердження не збігається.
+invalidTotpMessage=Невірний код автентифікатора.
+
+usernameExistsMessage=Ім''я користувача вже існує.
+emailExistsMessage=Електронна адреса вже існує.
+
+readOnlyUserMessage=Ви не можете оновити свій обліковий запис, оскільки він доступний лише для читання.
+readOnlyUsernameMessage=Ви не можете оновити своє ім''я користувача, оскільки воно доступне лише для читання.
+readOnlyPasswordMessage=Ви не можете оновити свій пароль, оскільки Ваш обліковий запис доступний лише для читання.
+
+successTotpMessage=Мобільний автентифікатор налаштовано.
+successTotpRemovedMessage=Мобільний автентифікатор видалено.
+
+successGrantRevokedMessage=Доступ успішно відкликано.
+
+accountUpdatedMessage=Ваш обліковий запис оновлено.
+accountPasswordUpdatedMessage=Ваш пароль оновлено.
+
+missingIdentityProviderMessage=Не вказаний провайдер облікових записів.
+invalidFederatedIdentityActionMessage=Недійсна або відсутня дія.
+identityProviderNotFoundMessage=Вказаний провайдер облікових записів не знайдений.
+federatedIdentityLinkNotActiveMessage=Цей ідентифікатор більше не активний.
+federatedIdentityRemovingLastProviderMessage=Ви не можете видалити останній федеративний ідентифікатор, оскільки у Вас немає пароля.
+identityProviderRedirectErrorMessage=Не вдалося перенаправити до провайдера облікових записів.
+identityProviderRemovedMessage=Провайдер облікових записів був успішно видалений.
+identityProviderAlreadyLinkedMessage=Федеративний ідентифікатор, повернутий {0}, уже зв''язаний з іншим користувачем.
+staleCodeAccountMessage=Термін дії сторінки минув. Будь ласка, спробуйте ще раз.
+consentDenied=Згода відхилена.
+access-denied-when-idp-auth=У доступі відмовлено під час автентифікації за допомогою {0}
+
+accountDisabledMessage=Обліковий запис вимкнено, зверніться до адміністратора.
+
+accountTemporarilyDisabledMessage=Обліковий запис тимчасово вимкнено, зверніться до адміністратора або повторіть спробу пізніше.
+invalidPasswordMinLengthMessage=Невірний пароль: мінімальна довжина {0}.
+invalidPasswordMaxLengthMessage=Невірний пароль: максимальна довжина {0}.
+invalidPasswordMinLowerCaseCharsMessage=Невірний пароль: має містити щонайменше {0} символів нижнього регістру.
+invalidPasswordMinDigitsMessage=Невірний пароль: має містити принаймні {0} цифр.
+invalidPasswordMinUpperCaseCharsMessage=Невірний пароль: має містити щонайменше {0} символів у верхньому регістрі.
+invalidPasswordMinSpecialCharsMessage=Невірний пароль: має містити щонайменше {0} спеціальних символів.
+invalidPasswordNotUsernameMessage=Невірний пароль: не повинен дорівнювати імені користувача.
+invalidPasswordNotEmailMessage=Невірний пароль: не повинен відповідати електронній пошті.
+invalidPasswordRegexPatternMessage=Невірний пароль: не відповідає шаблону(ам) регулярного виразу.
+invalidPasswordHistoryMessage=Недійсний пароль: не повинен дорівнювати жодному з останніх {0} паролів.
+invalidPasswordBlacklistedMessage=Невірний пароль: пароль у чорному списку.
+invalidPasswordGenericMessage=Невірний пароль: новий пароль не відповідає політиці паролів.
+
+# Authorization
+myResources=Мої ресурси
+myResourcesSub=Мої ресурси
+doDeny=Відмовити
+doRevoke=Відкликати
+doApprove=Схвалити
+doRemoveSharing=Видалити спільний доступ
+doRemoveRequest=Видалити запит
+peopleAccessResource=Люди з доступом до цього ресурсу
+resourceManagedPolicies=Дозволи, що надають доступ до цього ресурсу
+resourceNoPermissionsGrantingAccess=Немає прав доступу до цього ресурсу
+anyAction=Будь-яка дія
+description=Опис
+name=Ім''я
+scopes=Доступи
+resource=Ресурс
+user=Користувач
+peopleSharingThisResource=Люди, які діляться цим ресурсом
+shareWithOthers=Поділитися з іншими
+needMyApproval=Потрібне моє схвалення
+requestsWaitingApproval=Ваші запити очікують схвалення
+icon=Зображення
+requestor=Заявник
+owner=Власник
+resourcesSharedWithMe=Ресурси, якими я поділився
+permissionRequestion=Запит на дозвіл
+permission=Дозвіл
+shares=Спільні ресурси
+notBeingShared=Цей ресурс не використовується спільно.
+notHaveAnyResource=У вас немає ресурсів
+noResourcesSharedWithYou=Немає ресурсів, спільних з вами
+havePermissionRequestsWaitingForApproval=У вас є {0} запит(ів) дозволу, які очікують на затвердження.
+clickHereForDetails=Натисніть тут для отримання деталей.
+resourceIsNotBeingShared=Ресурс не використовується спільно
+
+
+# Applications
+applicationName=Назва
+applicationType=Тип застосунку
+applicationInUse=Тільки застосунок, який використовується
+clearAllFilter=Очистити всі фільтри
+activeFilters=Активні фільтри
+filterByName=Фільтрувати за назвою ...
+allApps=Усі застосунки
+internalApps=Внутрішні застосунки
+thirdpartyApps=Сторонні застосунки
+appResults=Результати
+clientNotFoundMessage=Клієнта не знайдено.
+
+# Linked account
+authorizedProvider=Авторизований провайдер
+authorizedProviderMessage=Авторизовані провайдери, зв''язані з вашим обліковим записом
+identityProvider=Провайдер облікових записів
+identityProviderMessage=Щоб зв''язати Ваш обліковий запис із налаштованими Вами провайдерами облікових записів
+socialLogin=Вхід через соціальну мережу
+userDefined=Визначено користувачем
+removeAccess=Скасувати доступ
+removeAccessMessage=Вам потрібно буде знову надати доступ, якщо ви бажаєте використовувати цей обліковий запис у застосунку.
+
+# Authenticator
+authenticatorStatusMessage=Двофакторна автентифікація в даний час
+authenticatorFinishSetUpTitle=Ваша двофакторна автентифікація
+authenticatorFinishSetUpMessage=Кожного разу, коли Ви входите в обліковий запис, Вам буде запропоновано ввести код двофакторної автентифікації.
+authenticatorSubTitle=Налаштувати двофакторну автентифікацію
+authenticatorSubMessage=Щоб підвищити безпеку Вашого облікового запису, увімкніть принаймні один із доступних методів двофакторної автентифікації.
+authenticatorMobileTitle=Мобільний автентифікатор
+authenticatorMobileMessage=Використовуйте мобільний автентифікатор для отримання кодів підтвердження двофакторної автентифікації.
+authenticatorMobileFinishSetUpMessage=Автентифікатор був прив''язаний до Вашого телефону.
+authenticatorActionSetup=Налаштувати
+authenticatorSMSTitle=Код SMS
+authenticatorSMSMessage=Keycloak надішле код підтвердження на ваш телефон.
+authenticatorSMSFinishSetUpMessage=Текстові повідомлення надсилаються до
+authenticatorDefaultStatus=За замовчуванням
+authenticatorChangePhone=Змінити номер телефону
+
+# Authenticator - Mobile Authenticator setup
+authenticatorMobileSetupTitle=Налаштування мобільного автентифікатора
+smscodeIntroMessage=Введіть свій номер телефону, і на Ваш телефон буде надіслано код підтвердження.
+mobileSetupStep1=Встановіть застосунок автентифікації на свій телефон. Підтримуються перелічені тут застосунки.
+mobileSetupStep2=Відкрийте застосунок та відскануйте штрих-код:
+mobileSetupStep3=Введіть одноразовий код, наданий застосунком, і натисніть «Зберегти», щоб завершити налаштування.
+scanBarCode=Бажаєте сканувати штрих-код?
+enterBarCode=Введіть одноразовий код
+doCopy=Копіювати
+doFinish=Завершити
+
+# Authenticator - SMS Code setup
+authenticatorSMSCodeSetupTitle=Налаштування SMS коду
+chooseYourCountry=Виберіть свою країну
+enterYourPhoneNumber=Введіть свій номер телефону
+sendVerficationCode=Надіслати код підтвердження
+enterYourVerficationCode=Введіть свій код підтвердження
+
+# Authenticator - backup Code setup
+authenticatorBackupCodesSetupTitle=Налаштування кодів відновлення автентифікації
+realmName=Назва realm
+doDownload=Завантажити
+doPrint=Роздрукувати
+generateNewBackupCodes=Створити нові коди відновлення автентифікації
+backtoAuthenticatorPage=Повернутися до сторінки аутентифікатора
+
+
+# Resources
+resources=Ресурси
+sharedwithMe=Ресурси, якими поділилися зі мною
+share=Поділитися
+sharedwith=Спільно з
+accessPermissions=Дозволи доступу
+permissionRequests=Запити на дозвіл
+approve=Схвалити
+approveAll=Схвалити всі
+people=люди
+perPage=на сторінку
+currentPage=Поточна сторінка
+sharetheResource=Поділитися ресурсом
+group=Група
+selectPermission=Виберіть дозвіл
+addPeople=Додайте людей для спільного використання Вашого ресурсу
+addTeam=Додайте команду для спільного використання Вашого ресурсу
+myPermissions=Мої дозволи
+waitingforApproval=Очікування схвалення
+anyPermission=Будь-який дозвіл
+
+# Openshift messages
+openshift.scope.user_info=Інформація про користувача
+openshift.scope.user_check-access=Інформація про доступ користувача
+openshift.scope.user_full=Повний доступ
+openshift.scope.list-projects=Список проектів
+
+error-invalid-value=Невірне значення.
+error-invalid-blank=Будь ласка, вкажіть значення.
+error-empty=Будь ласка, вкажіть значення.
+error-invalid-length=Атрибут {0} повинен мати довжину між {1} і {2}.
+error-invalid-length-too-short=Атрибут {0} повинен мати мінімальну довжину {1}.
+error-invalid-length-too-long=Атрибут {0} повинен мати максимальну довжину {2}.
+error-invalid-email=Невірна адреса електронної пошти.
+error-invalid-number=Невірний номер.
+error-number-out-of-range=Атрибут {0} має бути числом між {1} і {2}.
+error-number-out-of-range-too-small=Атрибут {0} повинен мати мінімальне значення {1}.
+error-number-out-of-range-too-big=Атрибут {0} повинен мати максимальне значення {2}.
+error-pattern-no-match=Невірне значення.
+error-invalid-uri=Невірний URL.
+error-invalid-uri-scheme=Невірна схема URL.
+error-invalid-uri-fragment=Невірний фрагмент URL.
+error-user-attribute-required=Будь ласка, вкажіть атрибут {0}.
+error-invalid-date=Невірна дата.
+error-user-attribute-read-only=Поле {0} лише для читання.
+error-username-invalid-character=Ім''я користувача містить невірний символ.
+error-person-name-invalid-character=Ім''я містить невірний символ.
\ No newline at end of file
diff --git a/themes/custom-theme-template/account/messages/messages_zh_CN.properties b/themes/custom-theme-template/account/messages/messages_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ebd9bfa2694150c699ba1fdb96eec45725ae7586
--- /dev/null
+++ b/themes/custom-theme-template/account/messages/messages_zh_CN.properties
@@ -0,0 +1,166 @@
+doSave=保存
+doCancel=取消
+doLogOutAllSessions=登出所有会话
+doRemove=删除
+doAdd=添加
+doSignOut=登出
+
+personalInfoSidebarTitle=个人信息
+accountSecuritySidebarTitle=帐户安全
+signingInSidebarTitle=访问凭证管理
+deviceActivitySidebarTitle=设备活动
+linkedAccountsSidebarTitle=关联账户
+
+editAccountHtmlTitle=编辑账户
+federatedIdentitiesHtmlTitle=链接的身份
+accountLogHtmlTitle=账户日志
+changePasswordHtmlTitle=更改密码
+sessionsHtmlTitle=会话
+accountManagementTitle=Keycloak账户管理
+authenticatorTitle=认证者
+applicationsHtmlTitle=应用
+
+personalInfoIntroMessage=管理您的基本信息
+accountSecurityIntroMessage=控制您的密码和帐户访问
+applicationsIntroMessage=跟踪和管理您的应用程序访问您帐户的权限
+personalSubMessage=管理您的基本信息。
+
+authenticatorCode=一次性认证码
+email=电子邮件
+firstName=名
+givenName=姓
+fullName=全名
+lastName=姓
+familyName=姓
+password=密码
+passwordConfirm=确认
+passwordNew=新密码
+username=用户名
+address=地址
+street=街道
+locality=城市住所
+region=省,自治区,直辖市
+postal_code=邮政编码
+country=国家
+emailVerified=验证过的Email
+gssDelegationCredential=GSS Delegation Credential
+
+role_admin=管理员
+role_realm-admin=域管理员
+role_create-realm=创建域
+role_view-realm=查看域
+role_view-users=查看用户
+role_view-applications=查看应用
+role_view-clients=查看客户
+role_view-events=查看事件
+role_view-identity-providers=查看身份提供者
+role_manage-realm=管理域
+role_manage-users=管理用户
+role_manage-applications=管理应用
+role_manage-identity-providers=管理身份提供者
+role_manage-clients=管理客户
+role_manage-events=管理事件
+role_view-profile=查看用户信息
+role_manage-account=管理账户
+role_read-token=读取 token
+role_offline-access=离线访问
+role_uma_authorization=获取授权
+client_account=账户
+client_security-admin-console=安全管理终端
+client_admin-cli=管理命令行
+client_realm-management=域管理
+client_broker=代理
+
+
+requiredFields=必填项
+allFieldsRequired=所有项必填
+
+backToApplication=« 回到应用
+backTo=回到 {0}
+
+date=日期
+event=事件
+ip=IP
+client=客户端
+clients=客户端
+details=详情
+started=开始
+lastAccess=最后一次访问
+expires=过期时间
+applications=应用
+
+account=账户
+federatedIdentity=关联身份
+authenticator=认证方
+device-activity=设备活动
+sessions=会话
+log=日志
+
+application=应用
+availablePermissions=可用权限
+grantedPermissions=授予权限
+grantedPersonalInfo=授权的个人信息
+additionalGrants=可授予的权限
+action=操作
+inResource=in
+fullAccess=所有权限
+offlineToken=离线 token
+revoke=收回授权
+
+configureAuthenticators=配置的认证者
+mobile=手机
+totpStep1=在你的设备上安装 <a href="https://fedorahosted.org/freeotp/" target="_blank">FreeOTP</a> 或者 Google Authenticator.两个应用可以从 <a href="https://play.google.com">Google Play</a> 和 Apple App Store下载。
+totpStep2=打开应用扫描二维码输入验证码
+totpStep3=输入应用提供的一次性验证码单击保存
+
+missingUsernameMessage=请指定用户名
+missingFirstNameMessage=请指定名
+invalidEmailMessage=无效的电子邮箱地址
+missingLastNameMessage=请指定姓
+missingEmailMessage=请指定邮件地址
+missingPasswordMessage=请输入密码
+notMatchPasswordMessage=密码不匹配
+
+missingTotpMessage=请指定认证者代码
+invalidPasswordExistingMessage=无效的旧密码
+invalidPasswordConfirmMessage=确认密码不相符
+invalidTotpMessage=无效的认证码
+
+usernameExistsMessage=用户名已经存在
+emailExistsMessage=电子邮箱已经存在
+
+readOnlyUserMessage=无法修改账户,因为它是只读的。
+readOnlyPasswordMessage=不可以更该账户因为它是只读的。
+
+successTotpMessage=手机认证者配置完毕
+successTotpRemovedMessage=手机认证者已删除
+
+successGrantRevokedMessage=授权成功回收
+
+accountUpdatedMessage=您的账户已经更新
+accountPasswordUpdatedMessage=您的密码已经修改
+
+missingIdentityProviderMessage=身份提供者未指定
+invalidFederatedIdentityActionMessage=无效或者缺少操作
+identityProviderNotFoundMessage=指定的身份提供者未找到
+federatedIdentityLinkNotActiveMessage=这个身份不再使用了。
+federatedIdentityRemovingLastProviderMessage=你不可以移除最后一个身份提供者因为你没有设置密码
+identityProviderRedirectErrorMessage=尝试重定向到身份提供商失败
+identityProviderRemovedMessage=身份提供商成功删除
+identityProviderAlreadyLinkedMessage=链接的身份 {0} 已经连接到已有用户。
+staleCodeAccountMessage=页面过期。请再试一次。
+consentDenied=不同意
+
+accountDisabledMessage=账户已经关闭,请联系管理员
+
+accountTemporarilyDisabledMessage=账户暂时关闭,请联系管理员或稍后再试。
+invalidPasswordMinLengthMessage=无效的密码:最短长度 {0}.
+invalidPasswordMinLowerCaseCharsMessage=无效的密码: 至少包含 {0} 小写字母。
+invalidPasswordMinDigitsMessage=无效的密码:  至少包含 {0} 数字。
+invalidPasswordMinUpperCaseCharsMessage=无效的密码: 至少包含 {0} 大写字母
+invalidPasswordMinSpecialCharsMessage=无效的密码: 至少包含 {0} 个特殊字符
+invalidPasswordNotUsernameMessage=无效的密码: 不能与用户名相同
+invalidPasswordRegexPatternMessage=无效的密码:  无法与正则表达式匹配
+invalidPasswordHistoryMessage=无效的密码: 不能与之前的{0} 个旧密码相同
+
+locale_fa=فارسی
diff --git a/themes/custom-theme-template/account/theme.properties b/themes/custom-theme-template/account/theme.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4162299c96377d8604c3eedfe1e13f3f48fea955
--- /dev/null
+++ b/themes/custom-theme-template/account/theme.properties
@@ -0,0 +1 @@
+locales=ar,ca,cs,da,de,el,en,es,fa,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,th,tr,uk,zh-CN
diff --git a/themes/custom-theme-template/admin/messages/messages_ar.properties b/themes/custom-theme-template/admin/messages/messages_ar.properties
new file mode 100644
index 0000000000000000000000000000000000000000..fcc36ed46b8c32eb2bf7d6dea36ac93e41ee69ff
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_ar.properties
@@ -0,0 +1,66 @@
+invalidPasswordMinLengthMessage=كلمة المرور غير صالحة: الحد الأدنى للطول {0}.
+invalidPasswordMaxLengthMessage=كلمة المرور غير صالحة: الحد الأقصى للطول {0}.
+invalidPasswordMinLowerCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف صغيرة على الأقل.
+invalidPasswordMinDigitsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} أرقام على الأقل.
+invalidPasswordMinUpperCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف كبيرة على الأقل.
+invalidPasswordMinSpecialCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} رموز على الأقل.
+invalidPasswordNotUsernameMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لاسم المستخدم.
+invalidPasswordNotEmailMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للبريد الإلكتروني.
+invalidPasswordRegexPatternMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للأنماط المحددة.
+invalidPasswordHistoryMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لأي من كلمات المرور الـ {0} الأخيرة.
+invalidPasswordBlacklistedMessage=كلمة المرور غير صالحة: كلمة المرور في القائمة السوداء.
+invalidPasswordGenericMessage=كلمة المرور غير صالحة: كلمة المرور الجديدة لا تتطابق مع سياسات كلمة المرور.
+
+ldapErrorEditModeMandatory=وضع التحرير إلزامي
+ldapErrorInvalidCustomFilter=لا يبدأ عامل تصفية LDAP المخصص بـ "(" أو لا ينتهي بـ ")".
+ldapErrorConnectionTimeoutNotNumber=وقت مهلة الاتصال يجب أن يكون رقمًا
+ldapErrorReadTimeoutNotNumber=وقت مهلة القراءة يجب أن يكون رقمًا
+ldapErrorMissingClientId=يجب توفير معرف العميل Client ID في التكوين عند عدم استخدام تعيين أدوار المنظومة.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=لا يمكن الحفاظ على خاصية وراثة المجموعة واستخدام نوع عضوية UID في نفس الوقت.
+ldapErrorCantWriteOnlyForReadOnlyLdap=لا يمكن تعيين خاصية "للكتابة فقط" عندما لا يكون وضع مزود LDAP قابل للكتابة.
+ldapErrorCantWriteOnlyAndReadOnly=لا يمكن تعيين خاصية "للكتابة فقط" وخاصية "للقراءة فقط" في نفس الوقت
+ldapErrorCantEnableStartTlsAndConnectionPooling=لا يمكن تفعيل ميزة StartTLS وميزة "مشاركة الاتصالات" في نفس الوقت.
+ldapErrorCantEnableUnsyncedAndImportOff=لا يمكن تعطيل استيراد المستخدمين عندما يكون وضع مزود LDAP غير متزامن.
+ldapErrorMissingGroupsPathGroup=مسار المجموعة غير موجود - يرجى إنشاء المجموعة على المسار المحدد أولاً
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=التحقق من سياسة كلمة المرور ينطبق فقط مع وضع التحرير القابل للكتابة
+
+clientRedirectURIsFragmentError=عناوين موقع إعادة التوجيه يجب ألا يحتوي على ملحق
+clientRootURLFragmentError=عنوان الموقع الجذر يجب ألا يحتوي على ملحق
+clientRootURLIllegalSchemeError=عنوان الموقع الجذر يستخدم بادئة مخالفة
+clientBaseURLIllegalSchemeError=عنوان الموقع الأساس يستخدم بادئة مخالفة
+backchannelLogoutUrlIllegalSchemeError=عنوان الموقع لتسجيل الخروج عن طريق القناة الخلفية يستخدم بادئة مخالفة
+clientRedirectURIsIllegalSchemeError=عنوان موقع إعادة التوجيه يستخدم بادئة مخالفة
+clientBaseURLInvalid=عنوان الموقع الأساس غير صالح
+clientRootURLInvalid=عنوان الموقع الجذر غير صالح
+clientRedirectURIsInvalid=عنوان موقع إعادة التوجيه غير صالح
+backchannelLogoutUrlIsInvalid=عنوان الموقع لتسجيل الخروج عن طريق القناة الخلفية غير صالح
+
+pairwiseMalformedClientRedirectURI=عنوان موقع إعادة التوجيه الخاص بالعميل غير صالح.
+pairwiseClientRedirectURIsMissingHost=عناوين موقع إعادة التوجيه الخاصة بالعميل يجب أن تتكون من جزئية مضيف صالحة.
+pairwiseClientRedirectURIsMultipleHosts=من دون إعداد عنوان موقع لمعرف القطاع، عناوين موقع إعادة التوجيه الخاصة بالعميل يجب ألا تتكون من عدة جزئيات مضيف.
+pairwiseMalformedSectorIdentifierURI=عنوان الموقع لمعرف القطاع معطوب.
+pairwiseFailedToGetRedirectURIs=فشل في الحصول على عناوين موقع إعادة التوجيه من عنوان الموقع لمعرف القطاع.
+pairwiseRedirectURIsMismatch=لا تتطابق عناوين موقع إعادة التوجيه الخاصة بالعميل مع عناوين موقع إعادة التوجيه التي تم جلبها من عنوان الموقع لمعرف القطاع
+
+duplicatedJwksSettings=لا يمكن تفعيل المفتاح "استخدام JWKS" والمفتاح "استخدام عنوان موقع JWKS" في نفس الوقت.
+
+error-invalid-value=قيمة غير صالحة.
+error-invalid-blank=يرجى تحديد قيمة.
+error-empty=يرجى تحديد قيمة.
+error-invalid-length=الطول يجب أن يكون بين {1} و {2}.
+error-invalid-length-too-short=الطول يجب ألا يقل عن {1}.
+error-invalid-length-too-long=الطول يجب ألا يزيد عن {2}.
+error-invalid-email=بريد إلكتروني غير صالح.
+error-invalid-number=رقم غير صالح.
+error-number-out-of-range=الرقم يجب أن يكون بين {1} و {2}.
+error-number-out-of-range-too-small=الرقم يجب ألا تقل قيمته عن {1}.
+error-number-out-of-range-too-big=الرقم يجب ألا تزيد قيمته عن {2}.
+error-pattern-no-match=قيمة غير صالحة.
+error-invalid-uri=عنوان موقع غير صالح.
+error-invalid-uri-scheme=بادئة عنوان موقع غير صالحة.
+error-invalid-uri-fragment=ملحق عنوان موقع غير صالح.
+error-user-attribute-required=يرجى تحديد هذا الحقل.
+error-invalid-date=تاريخ غير صالح.
+error-user-attribute-read-only=هذا الحقل للقراءة فقط.
+error-username-invalid-character=القيمة تحتوي على حرف غير صالح.
+error-person-name-invalid-character=القيمة تحتوي على حرف غير صالح.
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_ca.properties b/themes/custom-theme-template/admin/messages/messages_ca.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ecf596980c39a524ce4a3da662eae89c1ad9b076
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_ca.properties
@@ -0,0 +1,67 @@
+invalidPasswordMinLengthMessage=La contrasenya no és vàlida: la longitud mínima és {0}.
+invalidPasswordMaxLengthMessage=La contrasenya no és vàlida: la longitud màxima és {0}.
+invalidPasswordMinLowerCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres minúscules.
+invalidPasswordMinDigitsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} caràcters numèrics.
+invalidPasswordMinUpperCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres majúscules.
+invalidPasswordMinSpecialCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} caràcters especials.
+invalidPasswordNotUsernameMessage=La contrasenya no és vàlida: no pot ser igual al nom d''usuari.
+invalidPasswordNotEmailMessage=La contrasenya no és vàlida: no pot ser igual al correu electrònic.
+invalidPasswordRegexPatternMessage=La contrasenya no és vàlida: no coincideix amb el patró de l''expressió regular.
+invalidPasswordHistoryMessage=La contrasenya no és vàlida: no pot ser igual a les últimes {0} contrasenyes.
+invalidPasswordBlacklistedMessage=La contrasenya no és vàlida: està en una llista negra.
+invalidPasswordGenericMessage=La contrasenya no és vàlida: la contrasenya nova no coincideix amb les polítiques de contrasenya.
+
+ldapErrorEditModeMandatory=El mode d''edició és requerit
+ldapErrorInvalidCustomFilter=El filtre d''LDAP personalitzat configurat no comença per «(» o no acaba amb «)».
+ldapErrorConnectionTimeoutNotNumber=El temps d''espera de la connexió ha de ser un número
+ldapErrorReadTimeoutNotNumber=El temps d''espera de la lectura ha de ser un número
+ldapErrorMissingClientId=S''ha de proveir un ID de client a la configuració quan el mapatge de rols del domini no està en ús.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=No és possible preservar l''herència de grups i alhora utilitzar el tipus de pertinença UID.
+ldapErrorCantWriteOnlyForReadOnlyLdap=No es pot establir el mode només escriptura quan el mode del proveïdor LDAP no és «WRITABLE».
+ldapErrorCantWriteOnlyAndReadOnly=No es pot establir només escriptura i només lectura alhora
+ldapErrorCantEnableStartTlsAndConnectionPooling=No es pot habilitar el StartTLS i la disponibilitat de connexions alhora.
+ldapErrorCantEnableUnsyncedAndImportOff=No es pot inhabilitar la importació d''usuaris quan el mode del proveïdor LDAP és «UNSYNCED».
+ldapErrorMissingGroupsPathGroup=El grup de camins de grup no existeix. Creeu el grup al camí especificat primer
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=La política de validació de contrasenyes només és aplicable amb el mode d''edició «WRITABLE»
+
+clientRedirectURIsFragmentError=Els URI de redirecció no han de contenir un fragment d''URL
+clientRootURLFragmentError=L''URL arrel no ha de contenir un fragment d''URL
+clientRootURLIllegalSchemeError=L''URL arrel utilitza un esquema il·legal
+clientBaseURLIllegalSchemeError=L''URL base utilitza un esquema il·legal
+backchannelLogoutUrlIllegalSchemeError=L''URL de desconnexió del canal posterior utilitza un esquema il·legal
+clientRedirectURIsIllegalSchemeError=Un URI de redirecció utilitza un esquema il·legal
+clientBaseURLInvalid=L''URL base no és un URL vàlid
+clientRootURLInvalid=L''URL arrel no és un URL vàlid
+clientRedirectURIsInvalid=Un URI de redirecció no és un URI vàlid
+backchannelLogoutUrlIsInvalid=L''URL de desconnexió del canal posterior no és un URL vàlid
+
+
+pairwiseMalformedClientRedirectURI=El client conté un URI de redirecció no vàlid.
+pairwiseClientRedirectURIsMissingHost=Els URI de redirecció de client ha de contenir un component de servidor vàlid.
+pairwiseClientRedirectURIsMultipleHosts=Sense un URI d''identificador de sector, els URI de redirecció de client no poden contenir múltiples components de servidor.
+pairwiseMalformedSectorIdentifierURI=L''URI d''identificador de sector està mal formatat.
+pairwiseFailedToGetRedirectURIs=No s''ha pogut obtenir cap URI de redirecció des de l''URI d''identificador de sector.
+pairwiseRedirectURIsMismatch=Els URI de redirecció de client no concorden amb els URI de redirecció obtinguts des de l''URI d''identificador de sector.
+
+duplicatedJwksSettings=Els commutadors «Utilitza JWKS» i «Utilitza un URL JWKS» no poden estar habilitats al mateix temps.
+
+error-invalid-value=El valor no és vàlid.
+error-invalid-blank=Especifiqueu un valor.
+error-empty=Especifiqueu un valor.
+error-invalid-length=L''atribut {0} ha de tindre una llargària d''entre {1} i {2}.
+error-invalid-length-too-short=L''atribut {0} ha de tindre una llargària mínima de {1}.
+error-invalid-length-too-long=L''atribut {0} ha de tindre una llargària màxima de {2}.
+error-invalid-email=L''adreça de correu electrònic no és vàlida.
+error-invalid-number=El nombre no és vàlid.
+error-number-out-of-range=L''atribut {0} ha de ser un número entre {1} i {2}.
+error-number-out-of-range-too-small=L''atribut {0} ha de tindre valor mínim de {1}.
+error-number-out-of-range-too-big=L''atribut {0} ha de tindre valor màxim de {2}.
+error-pattern-no-match=El valor no és vàlid.
+error-invalid-uri=L''URL no és vàlid.
+error-invalid-uri-scheme=L''esquema d''URL no és vàlid.
+error-invalid-uri-fragment=El fragment d''URL no és vàlid.
+error-user-attribute-required=Especifiqueu l''atribut {0}.
+error-invalid-date=L''atribut {0} és una data invàlida.
+error-user-attribute-read-only=L''atribut {0} és només de lectura.
+error-username-invalid-character={0} conté un caràcter no vàlid.
+error-person-name-invalid-character={0} conté un caràcter no vàlid.
diff --git a/themes/custom-theme-template/admin/messages/messages_de.properties b/themes/custom-theme-template/admin/messages/messages_de.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b8283d54b7b86d61bac6eb731ad7c57d9f57c8e6
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_de.properties
@@ -0,0 +1,29 @@
+invalidPasswordMinLengthMessage=Ungültiges Passwort: muss mindestens {0} Zeichen beinhalten.
+invalidPasswordMinLowerCaseCharsMessage=Ungültiges Passwort: muss mindestens {0} Kleinbuchstaben beinhalten.
+invalidPasswordMinDigitsMessage=Ungültiges Passwort: muss mindestens {0} Ziffern beinhalten.
+invalidPasswordMinUpperCaseCharsMessage=Ungültiges Passwort: muss mindestens {0} Großbuchstaben beinhalten.
+invalidPasswordMinSpecialCharsMessage=Ungültiges Passwort: muss mindestens {0} Sonderzeichen beinhalten.
+invalidPasswordNotUsernameMessage=Ungültiges Passwort: darf nicht identisch mit dem Benutzernamen sein.
+invalidPasswordNotEmailMessage=Ungültiges Passwort: darf nicht identisch mit der E-Mail-Adresse sein.
+invalidPasswordRegexPatternMessage=Ungültiges Passwort: stimmt nicht mit Regex-Muster überein.
+invalidPasswordHistoryMessage=Ungültiges Passwort: darf nicht identisch mit einem der letzten {0} Passwörter sein.
+invalidPasswordBlacklistedMessage=Ungültiges Passwort: Passwort ist zu bekannt und auf der schwarzen Liste.
+invalidPasswordGenericMessage=Ungültiges Passwort: neues Passwort erfüllt die Passwort-Anforderungen nicht.
+
+#ldapErrorInvalidCustomFilter=Custom configured LDAP filter does not start with "(" or does not end with ")".
+#ldapErrorConnectionTimeoutNotNumber=Connection Timeout must be a number
+#ldapErrorReadTimeoutNotNumber=Read Timeout must be a number
+#ldapErrorMissingClientId=Client ID needs to be provided in config when Realm Roles Mapping is not used.
+#ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Not possible to preserve group inheritance and use UID membership type together.
+#ldapErrorCantWriteOnlyForReadOnlyLdap=Can't set write only when LDAP provider mode is not WRITABLE
+#ldapErrorCantWriteOnlyAndReadOnly=Can't set write-only and read-only together
+
+#clientRedirectURIsFragmentError=Redirect URIs must not contain an URI fragment
+#clientRootURLFragmentError=Root URL must not contain an URL fragment
+
+#pairwiseMalformedClientRedirectURI=Client contained an invalid redirect URI.
+#pairwiseClientRedirectURIsMissingHost=Client redirect URIs must contain a valid host component.
+#pairwiseClientRedirectURIsMultipleHosts=Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.
+#pairwiseMalformedSectorIdentifierURI=Malformed Sector Identifier URI.
+#pairwiseFailedToGetRedirectURIs=Failed to get redirect URIs from the Sector Identifier URI.
+#pairwiseRedirectURIsMismatch=Client redirect URIs does not match redirect URIs fetched from the Sector Identifier URI.
diff --git a/themes/custom-theme-template/admin/messages/messages_el.properties b/themes/custom-theme-template/admin/messages/messages_el.properties
new file mode 100644
index 0000000000000000000000000000000000000000..6bd50b822fe2551a5c3123ab691959f4627ed614
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_el.properties
@@ -0,0 +1,63 @@
+error-invalid-date=Το πεδίο {0} δεν αποτελεί έγκυρη ημερομηνία.
+error-invalid-length-too-long=Το πεδίο {0} μπορεί να περιέχει το πολύ {2} χαρακτήρες .
+error-person-name-invalid-character=Το {0} περιέχει ένα μη έγκυρο χαρακτήρα.
+error-username-invalid-character=Το {0} περιέχει ένα μη έγκυρο χαρακτήρα.
+error-user-attribute-read-only=Το πεδίο {0} είναι για ανάγνωση μόνο.
+error-user-attribute-required=Παρακαλώ ορίστε το πεδίο {0}.
+error-invalid-uri-fragment=Μη έγκυρο κομμάτι URL.
+error-invalid-uri-scheme=Μη έγκυρο σχήμα URL.
+error-invalid-uri=Μη έγκυρο URL.
+error-pattern-no-match=Μη έγκυρη τιμή.
+error-number-out-of-range-too-big=Το πεδίο {0} μπορεί να έχει μέγιστη τιμή {2}.
+error-number-out-of-range-too-small=Το πεδίο {0} μπορεί να έχει ελάχιστη τιμή {1}.
+error-number-out-of-range=Το πεδίο {0} πρέπει να είναι ένας αριθμός μεταξύ {1} και {2}.
+error-invalid-number=Μη έγκυρος αριθμός.
+error-invalid-email=Μη έγκυρη διεύθυνση email.
+error-invalid-length-too-short=Το πεδίο {0} πρέπει να περιέχει τουλάχιστον {1} χαρακτήρα.
+error-invalid-length=Το πεδίο {0} μπορεί να περιέχει από {1} μέχρι {2} χαρακτήρες.
+error-empty=Παρακαλώ ορίστε τιμή.
+error-invalid-blank=Παρακαλώ ορίστε τιμή.
+error-invalid-value=Μη έγκυρη τιμή.
+duplicatedJwksSettings=Ο διακόπτης "Χρήση JWKS" και ο διακόπτης "Χρήση URL JWKS" δε μπορεί να είναι ενεργοί ταυτόχρονα.
+pairwiseRedirectURIsMismatch=Τα URI αναδρομολόγησης του πελάτη δεν ταιριάζουν με αυτά από το URI Αναγνωριστικού Τομέα.
+pairwiseFailedToGetRedirectURIs=Αποτυχία λήψης των URI αναδρομολόγησης από το URI Αναγνωριστικού Τομέα.
+pairwiseMalformedSectorIdentifierURI=Κακοσχηματισμένο URI Αναγνωριστικό Τομέα.
+pairwiseClientRedirectURIsMultipleHosts=Όταν δεν ορίζεται ένα URI Αναγνώρισης Τομέα, τα URI αναδρομολόγησης του πελάτη δε πρέπει να περιέχουν πολλαπλά στοιχεία διακομιστών.
+pairwiseClientRedirectURIsMissingHost=Τα URI αναδρομολόγησης του πελάτη πρέπει να περιέχουν ένα έγκυρο στοιχείο διακομιστή.
+
+
+pairwiseMalformedClientRedirectURI=Ο πελάτης περιείχε ένα μη έγκυρο URI αναδρομολόγησης.
+backchannelLogoutUrlIsInvalid=Ένα URL ανατροφοδότησης εξόδου δεν είναι έγκυρο URL
+clientRedirectURIsInvalid=Ένα URI αναδρομολόγησης δεν είναι έγκυρο URI
+clientRootURLInvalid=Το ριζικό URL δεν είναι ένα έγκυρο URL
+clientBaseURLInvalid=Το βασικό URL δεν είναι ένα έγκυρο URL
+clientRedirectURIsIllegalSchemeError=Ένα URI αναδρομολόγησης έχει ένα μη επιτρεπόμενο σχήμα
+backchannelLogoutUrlIllegalSchemeError=Το URL ανατροφοδότησης εξόδου δεν έχει ένα επιτρεπόμενο σχήμα
+clientRootURLIllegalSchemeError=Το ριζικό URL δεν έχει ένα επιτρεπόμενο σχήμα
+clientBaseURLIllegalSchemeError=Το βασικό URL δεν έχει ένα επιτρεπόμενο σχήμα
+clientRootURLFragmentError=Το ριζικό URL δεν πρέπει να περιέχει ένα μέρος από URL
+clientRedirectURIsFragmentError=Τα URI αναδρομολόγησης δεν πρέπει να περιέχουν άλλα μέρη URI
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=Η Πολιτική Επικύρωσης Κωδικών πρόσβασης είναι εφαρμόσιμη μόνο με την ΕΓΓΡΑΨΙΜΗ λειτουργία
+ldapErrorMissingGroupsPathGroup=Δεν υπάρχει η ομάδα διαδρομών Ομάδων - παρακαλώ δημιουργήστε πρώτα την ομάδα στην ορισμένη διαδρομή
+ldapErrorCantEnableUnsyncedAndImportOff=Δεν είναι δυνατή η Εισαγωγή χρηστών όταν ο πάροχος LDAP είναι σε λειτουργία ΑΣΥΓΧΡΟΝΟΣ
+ldapErrorCantEnableStartTlsAndConnectionPooling=Δεν είναι δυνατή η ταυτόχρονη ενεργοποίηση StartTLS και ομαδοποίησης συνδέσεων.
+ldapErrorCantWriteOnlyAndReadOnly=Αδυναμία ταυτόχρονου ορισμού εγγραφής-μόνο και ανάγνωσης-μόνο
+ldapErrorCantWriteOnlyForReadOnlyLdap=Αδυναμία ορισμού σε εγγραφή-μόνο, όταν ο πάροχος LDAP δεν είναι σε ΕΓΓΡΑΨΙΜΗ λειτουργία
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Δεν είναι δυνατή η ταυτόχρονη διατήρηση της κληρονομιάς ομάδας και χρήση του τύπου μελών UID.
+ldapErrorMissingClientId=Το Client ID πρέπει να παρέχεται στις ρυθμίσεις όταν δε χρησιμοποιείται η Αντιστοίχηση Ρόλων Τομέα.
+ldapErrorReadTimeoutNotNumber=Η Λήξη Χρόνου Ανάγνωσης πρέπει να είναι αριθμός
+ldapErrorConnectionTimeoutNotNumber=Η Λήξη Χρόνου Σύνδεσης πρέπει να είναι αριθμός
+ldapErrorInvalidCustomFilter=Το προσαρμοσμένο φίλτρο LDAP που ορίστηκε δεν ξεκινά με "(" ή δεν τελειώνει με ")".
+ldapErrorEditModeMandatory=Η Λειτουργία Επεξεργασίας είναι υποχρεωτική
+invalidPasswordGenericMessage=Μη έγκυρος κωδικός πρόσβασης: ο νέος κωδικός δε συμφωνεί με τις πολιτικές κωδικών.
+invalidPasswordBlacklistedMessage=Μη έγκυρος κωδικός πρόσβασης: ο κωδικός είναι απαγορευμένος.
+invalidPasswordHistoryMessage=Μη έγκυρος κωδικός πρόσβασης: δεν επιτρέπεται να είναι ο ίδιος με τους τελευταίους {0} κωδικούς.
+invalidPasswordRegexPatternMessage=Μη έγκυρος κωδικός πρόσβασης: δεν ταιριάζει με τα μοτίβα regex.
+invalidPasswordNotEmailMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το email.
+invalidPasswordNotUsernameMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το όνομα χρήστη.
+invalidPasswordMinSpecialCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} σύμβολα.
+invalidPasswordMinUpperCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} κεφαλαίους χαρακτήρες.
+invalidPasswordMinDigitsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} ψηφία.
+invalidPasswordMinLowerCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} πεζούς χαρακτήρες.
+invalidPasswordMaxLengthMessage=Μη έγκυρος κωδικός πρόσβασης: το ανώτατο όριο επιτρεπόμενων χαρακτήρων είναι {0}..
+invalidPasswordMinLengthMessage=Μη έγκυρος κωδικός πρόσβασης: το κατώτατο όριο επιτρεπόμενων χαρακτήρων είναι {0}.
diff --git a/themes/custom-theme-template/admin/messages/messages_en.properties b/themes/custom-theme-template/admin/messages/messages_en.properties
new file mode 100644
index 0000000000000000000000000000000000000000..21cb14c5683ddca6a2e8729278f3f1fcc0ea9fe8
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_en.properties
@@ -0,0 +1,68 @@
+invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
+invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
+invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
+invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
+invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
+invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
+invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
+invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
+invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
+invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
+invalidPasswordGenericMessage=Invalid password: new password does not match password policies.
+
+ldapErrorEditModeMandatory=Edit Mode is mandatory
+ldapErrorInvalidCustomFilter=Custom configured LDAP filter does not start with "(" or does not end with ")".
+ldapErrorConnectionTimeoutNotNumber=Connection Timeout must be a number
+ldapErrorReadTimeoutNotNumber=Read Timeout must be a number
+ldapErrorMissingClientId=Client ID needs to be provided in config when Realm Roles Mapping is not used.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Not possible to preserve group inheritance and use UID membership type together.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Can not set write only when LDAP provider mode is not WRITABLE
+ldapErrorCantWriteOnlyAndReadOnly=Can not set write-only and read-only together
+ldapErrorCantEnableStartTlsAndConnectionPooling=Can not enable both StartTLS and connection pooling.
+ldapErrorCantEnableUnsyncedAndImportOff=Can not disable Importing users when LDAP provider mode is UNSYNCED
+ldapErrorMissingGroupsPathGroup=Groups path group does not exist - please create the group on specified path first
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=Validate Password Policy is applicable only with WRITABLE edit mode
+
+clientRedirectURIsFragmentError=Redirect URIs must not contain an URI fragment
+clientRootURLFragmentError=Root URL must not contain an URL fragment
+clientRootURLIllegalSchemeError=Root URL uses an illegal scheme
+clientBaseURLIllegalSchemeError=Base URL uses an illegal scheme
+backchannelLogoutUrlIllegalSchemeError=Backchannel logout URL uses an illegal scheme
+clientRedirectURIsIllegalSchemeError=A redirect URI uses an illegal scheme
+clientBaseURLInvalid=Base URL is not a valid URL
+clientRootURLInvalid=Root URL is not a valid URL
+clientRedirectURIsInvalid=A redirect URI is not a valid URI
+backchannelLogoutUrlIsInvalid=Backchannel logout URL is not a valid URL
+
+
+pairwiseMalformedClientRedirectURI=Client contained an invalid redirect URI.
+pairwiseClientRedirectURIsMissingHost=Client redirect URIs must contain a valid host component.
+pairwiseClientRedirectURIsMultipleHosts=Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.
+pairwiseMalformedSectorIdentifierURI=Malformed Sector Identifier URI.
+pairwiseFailedToGetRedirectURIs=Failed to get redirect URIs from the Sector Identifier URI.
+pairwiseRedirectURIsMismatch=Client redirect URIs does not match redirect URIs fetched from the Sector Identifier URI.
+
+duplicatedJwksSettings=The "Use JWKS" switch and the switch "Use JWKS URL" cannot be ON at the same time.
+
+error-invalid-value=Invalid value.
+error-invalid-blank=Please specify value.
+error-empty=Please specify value.
+error-invalid-length=Attribute {0} must have a length between {1} and {2}.
+error-invalid-length-too-short=Attribute {0} must have minimal length of {1}.
+error-invalid-length-too-long=Attribute {0} must have maximal length of {2}.
+error-invalid-email=Invalid email address.
+error-invalid-number=Invalid number.
+error-number-out-of-range=Attribute {0} must be a number between {1} and {2}.
+error-number-out-of-range-too-small=Attribute {0} must have minimal value of {1}.
+error-number-out-of-range-too-big=Attribute {0} must have maximal value of {2}.
+error-pattern-no-match=Invalid value.
+error-invalid-uri=Invalid URL.
+error-invalid-uri-scheme=Invalid URL scheme.
+error-invalid-uri-fragment=Invalid URL fragment.
+error-user-attribute-required=Please specify attribute {0}.
+error-invalid-date=Attribute {0} is invalid date.
+error-user-attribute-read-only=Attribute {0} is read only.
+error-username-invalid-character={0} contains invalid character.
+error-person-name-invalid-character={0} contains invalid character.
+error-invalid-multivalued-size=Attribute {0} must have at least {1} and at most {2} value(s).
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_es.properties b/themes/custom-theme-template/admin/messages/messages_es.properties
new file mode 100644
index 0000000000000000000000000000000000000000..53dda627a71d99068963e59f6185edcf0e26c47f
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_es.properties
@@ -0,0 +1,68 @@
+invalidPasswordMinLengthMessage=Contraseña incorrecta: longitud mínima {0}.
+invalidPasswordMinLowerCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras minúsculas.
+invalidPasswordMinDigitsMessage=Contraseña incorrecta: debe contener al menos {0} caracteres numéricos.
+invalidPasswordMinUpperCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras mayúsculas.
+invalidPasswordMinSpecialCharsMessage=Contraseña incorrecta: debe contener al menos {0} caracteres especiales.
+invalidPasswordNotUsernameMessage=Contraseña incorrecta: no puede ser igual al nombre de usuario.
+invalidPasswordRegexPatternMessage=Contraseña incorrecta: no cumple la expresión regular.
+invalidPasswordHistoryMessage=Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.
+
+invalidPasswordMaxLengthMessage=Contraseña no válida: longitud máxima {0}.
+invalidPasswordNotEmailMessage=Contraseña no válida: no debe ser igual al correo electrónico.
+invalidPasswordBlacklistedMessage=Contraseña no válida: la contraseña está en la lista negra.
+invalidPasswordGenericMessage=Contraseña no válida: la nueva contraseña no coincide con las políticas de contraseña.
+
+ldapErrorEditModeMandatory=El modo de edición es obligatorio
+ldapErrorInvalidCustomFilter=Filtro LDAP configurado personalizado no comienza con "(" o no termina con ")".
+ldapErrorConnectionTimeoutNotNumber=El tiempo de espera de la conexión debe ser un número
+ldapErrorReadTimeoutNotNumber=El tiempo de espera de lectura debe ser un número
+ldapErrorMissingClientId=El ID del cliente debe proporcionarse en la configuración cuando no se utiliza la asignación de roles de reino.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=No es posible preservar la herencia grupal y usar el tipo de membresía UID juntos.
+ldapErrorCantWriteOnlyForReadOnlyLdap=No se puede configurar solo escritura cuando el modo del proveedor LDAP no tiene el modo de edición de escritura
+ldapErrorCantWriteOnlyAndReadOnly=No se pueden configurar solo escritura y solo lectura juntos
+ldapErrorCantEnableStartTlsAndConnectionPooling=No se puede habilitar StartTLS y agrupación de conexiones a la vez.
+ldapErrorCantEnableUnsyncedAndImportOff=No puede deshabilitar los usuarios de importación cuando el modo de proveedor LDAP no está sincronizado
+ldapErrorMissingGroupsPathGroup=La ruta de grupos no existe: cree el grupo en la ruta especificada primero
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=Validar la política de contraseña es aplicable solo con el modo de edición de escritura
+
+clientRedirectURIsFragmentError=Las URIs de redirección no deben contener un fragmento URI
+clientRootURLFragmentError=La URL de la raíz no debe contener un fragmento de URL
+clientRootURLIllegalSchemeError=URL de raíz utiliza un esquema ilegal
+clientBaseURLIllegalSchemeError=URL base utiliza un esquema ilegal
+backchannelLogoutUrlIllegalSchemeError=URL de inicio de sesión de BackChannel utiliza un esquema ilegal
+clientRedirectURIsIllegalSchemeError=Una URI de redirección utiliza un esquema ilegal
+clientBaseURLInvalid=La URL base no es una URL válida
+clientRootURLInvalid=La URL de la raíz no es una URL válida
+clientRedirectURIsInvalid=Una URI de redirección no es una URI válida
+backchannelLogoutUrlIsInvalid=La URL de inicio de sesión de BackChannel no es una URL válida
+
+
+pairwiseMalformedClientRedirectURI=El cliente contenía una URI de redirección inválida.
+pairwiseClientRedirectURIsMissingHost=Los URI de redirección del cliente deben contener un componente de host válido.
+pairwiseClientRedirectURIsMultipleHosts=Sin una URI de identificador del sector configurado, la URI de redirección del cliente no debe contener múltiples componentes de host.
+pairwiseMalformedSectorIdentifierURI=El identificador del sector de la URI está malformado.
+pairwiseFailedToGetRedirectURIs=No se pudo obtener la URI de redirección del identificador del sector de la URI.
+pairwiseRedirectURIsMismatch=La URI de redirección del cliente no coincide con las URI de redirección obtenidos del identificador del sector de la URI.
+
+duplicatedJwksSettings=El interruptor "Usar JWKS" y el interruptor "Usar URL JWKS" no pueden estar activos al mismo tiempo.
+
+error-invalid-value=Valor no válido.
+error-invalid-blank=Especifique el valor.
+error-empty=Especifique el valor.
+error-invalid-length=El atributo {0} debe tener una longitud entre {1} y {2}.
+error-invalid-length-too-short=El atributo {0} debe tener una longitud mínima de {1}.
+error-invalid-length-too-long=El atributo {0} debe tener una longitud máxima de {2}.
+error-invalid-email=Dirección de correo electrónico no válida.
+error-invalid-number=Número invalido.
+error-number-out-of-range=El atributo {0} debe ser un número entre {1} y {2}.
+error-number-out-of-range-too-small=El atributo {0} debe tener un valor mínimo de {1}.
+error-number-out-of-range-too-big=El atributo {0} debe tener un valor máximo de {2}.
+error-pattern-no-match=Valor no válido.
+error-invalid-uri=URL inválida.
+error-invalid-uri-scheme=Esquema de URL no válido.
+error-invalid-uri-fragment=Fragmento de URL no válido.
+error-user-attribute-required=Especifique el atributo {0}.
+error-invalid-date=El atributo {0} es una fecha no válida.
+error-user-attribute-read-only=El atributo {0} es de solo lectura.
+error-username-invalid-character={0} contiene algún carácter inválido.
+error-person-name-invalid-character={0} contiene algún carácter inválido.
diff --git a/themes/custom-theme-template/admin/messages/messages_fa.properties b/themes/custom-theme-template/admin/messages/messages_fa.properties
new file mode 100644
index 0000000000000000000000000000000000000000..3b6899c2c526e5c1da5cd5cf499ddae18861ce42
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_fa.properties
@@ -0,0 +1,67 @@
+invalidPasswordMinLengthMessage=رمز عبور نامعتبر: حداقل طول {0}.
+invalidPasswordMaxLengthMessage=رمز عبور نامعتبر: حداکثر طول {0}.
+invalidPasswordMinLowerCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه کوچک باشد.
+invalidPasswordMinDigitsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} رقم عددی باشد.
+invalidPasswordMinUpperCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه بزرگ باشد.
+invalidPasswordMinSpecialCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} کاراکتر خاص باشد.
+invalidPasswordNotUsernameMessage=رمز عبور نامعتبر: نباید برابر با نام کاربری باشد.
+invalidPasswordNotEmailMessage=رمز عبور نامعتبر: نباید برابر با ایمیل باشد.
+invalidPasswordRegexPatternMessage=رمز عبور نامعتبر: با الگو(های) regex مطابقت ندارد.
+invalidPasswordHistoryMessage=گذرواژه نامعتبر: نباید با هیچ یک از رمزهای عبور آخر {0} برابر باشد.
+invalidPasswordBlacklistedMessage=رمز عبور نامعتبر: رمز عبور در لیست سیاه قرار گرفته است.
+invalidPasswordGenericMessage=رمز عبور نامعتبر: رمز عبور جدید با سیاست های رمز عبور مطابقت ندارد.
+
+ldapErrorEditModeMandatory=حالت ویرایش اجباری است
+ldapErrorInvalidCustomFilter=فیلتر LDAP پیکربندی شده سفارشی با "(" شروع نمی شود یا با ")" ختم نمی شود.
+ldapErrorConnectionTimeoutNotNumber=زمان تایم اوت اتصال باید یک عدد باشد.
+ldapErrorReadTimeoutNotNumber=زمان خواندن باید یک عدد باشد
+ldapErrorMissingClientId=وقتی از Realm Roles Mapping استفاده نمی شود، شناسه مشتری باید در پیکربندی ارائه شود.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=امکان حفظ وراثت گروهی و استفاده از نوع عضویت UID با هم وجود ندارد.
+ldapErrorCantWriteOnlyForReadOnlyLdap=زمانی که حالت ارائه دهنده LDAP قابل نوشتن نباشد، نوشتن را نمی توان تنظیم کرد
+ldapErrorCantWriteOnlyAndReadOnly=نمی توان فقط نوشتن و فقط خواندن را با هم تنظیم کرد
+ldapErrorCantEnableStartTlsAndConnectionPooling=نمی توان هم StartTLS و هم ادغام اتصال را فعال کرد.
+ldapErrorCantEnableUnsyncedAndImportOff=وقتی حالت ارائه‌دهنده LDAP غیر همگام‌سازی است، نمی‌توان وارد کردن کاربران را غیرفعال کرد
+ldapErrorMissingGroupsPathGroup=گروه مسیر گروه وجود ندارد - لطفاً ابتدا گروه را در مسیر مشخص شده ایجاد کنید
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=سیاست اعتبار گذرواژه فقط با حالت ویرایش WRITABLE قابل اجرا است
+
+clientRedirectURIsFragmentError=URI های تغییر مسیر نباید حاوی قطعه URI باشند
+clientRootURLFragmentError=URL ریشه نباید حاوی یک قطعه URL باشد
+clientRootURLIllegalSchemeError=URL ریشه از یک طرح غیرقانونی استفاده می کند
+clientBaseURLIllegalSchemeError=URL پایه از یک طرح غیرقانونی استفاده می کند
+backchannelLogoutUrlIllegalSchemeError=URL خروج از بک کانال از یک طرح غیرقانونی استفاده می کند
+clientRedirectURIsIllegalSchemeError=یک URI تغییر مسیر از یک طرح غیرقانونی استفاده می کند
+clientBaseURLInvalid=URL پایه یک URL معتبر نیست
+clientRootURLInvalid=URL ریشه یک URL معتبر نیست
+clientRedirectURIsInvalid=URI تغییر مسیر یک URI معتبر نیست
+backchannelLogoutUrlIsInvalid=URL خروج از بک کانال یک URL معتبر نیست
+
+
+pairwiseMalformedClientRedirectURI=مشتری دارای یک URI تغییر مسیر نامعتبر است.
+pairwiseClientRedirectURIsMissingHost=URIهای تغییر مسیر مشتری باید شامل یک مؤلفه میزبان معتبر باشد.
+pairwiseClientRedirectURIsMultipleHosts=بدون یک URI شناسه بخش پیکربندی شده، URI های تغییر مسیر مشتری نباید شامل چندین مؤلفه میزبان باشد.
+pairwiseMalformedSectorIdentifierURI=URI شناسه بخش نادرست.
+pairwiseFailedToGetRedirectURIs=URIهای تغییر مسیر از URI شناسه بخش دریافت نشد.
+pairwiseRedirectURIsMismatch=CURIهای تغییر مسیر مستقیم با URIهای تغییر مسیر که از URI شناسه بخش واکشی شده اند مطابقت ندارد.
+
+duplicatedJwksSettings=سوئیچ "Use JWKS" و سوییچ "Use JWKS URL" نمی توانند همزمان روشن باشند.
+
+error-invalid-value=مقدار نامعتبر است.
+error-invalid-blank=لطفا مقدار را مشخص کنید
+error-empty=لطفا مقدار را مشخص کنید
+error-invalid-length=مشخصه {0} باید طولی بین {1} و {2} داشته باشد.
+error-invalid-length-too-short=مشخصه {0} باید حداقل طول {1} داشته باشد.
+error-invalid-length-too-long=مشخصه {0} باید حداکثر طول {2} داشته باشد.
+error-invalid-email=آدرس ایمیل نامعتبر است.
+error-invalid-number=عدد نامعتبر.
+error-number-out-of-range=مشخصه {0} باید عددی بین {1} و {2} باشد.
+error-number-out-of-range-too-small=مشخصه {0} باید حداقل مقدار {1} را داشته باشد.
+error-number-out-of-range-too-big=ویژگی {0} باید حداکثر مقدار {2} را داشته باشد.
+error-pattern-no-match=مقدار نامعتبر است.
+error-invalid-uri=URL نامعتبر است.
+error-invalid-uri-scheme=شمای URL نامعتبر است.
+error-invalid-uri-fragment=تکه URL نامعتبر است.
+error-user-attribute-required=لطفاً ویژگی {0} را مشخص کنید.
+error-invalid-date=مشخصه {0} تاریخ نامعتبر است.
+error-user-attribute-read-only=مشخصه {0} فقط قابل خواندن است.
+error-username-invalid-character={0} حاوی نویسه نامعتبر است.
+error-person-name-invalid-character={0} حاوی نویسه نامعتبر است.
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_fi.properties b/themes/custom-theme-template/admin/messages/messages_fi.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/themes/custom-theme-template/admin/messages/messages_fr.properties b/themes/custom-theme-template/admin/messages/messages_fr.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b8cc9b2fc0f76ff510f002211d03e4b977329138
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_fr.properties
@@ -0,0 +1,8 @@
+invalidPasswordMinLengthMessage=Mot de passe invalide : longueur minimale requise de {0}.
+invalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en minuscule.
+invalidPasswordMinDigitsMessage=Mot de passe invalide : doit contenir au moins {0} chiffre(s).
+invalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en majuscule.
+invalidPasswordMinSpecialCharsMessage=Mot de passe invalide : doit contenir au moins {0} caractère(s) spéciaux.
+invalidPasswordNotUsernameMessage=Mot de passe invalide : ne doit pas être identique au nom d''utilisateur.
+invalidPasswordRegexPatternMessage=Mot de passe invalide : ne valide pas l''expression rationnelle.
+invalidPasswordHistoryMessage=Mot de passe invalide : ne doit pas être égal aux {0} derniers mot de passe.
diff --git a/themes/custom-theme-template/admin/messages/messages_it.properties b/themes/custom-theme-template/admin/messages/messages_it.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/themes/custom-theme-template/admin/messages/messages_ja.properties b/themes/custom-theme-template/admin/messages/messages_ja.properties
new file mode 100644
index 0000000000000000000000000000000000000000..21d4fe4d57756e6cd273b27fcf4c48b30185c2ed
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_ja.properties
@@ -0,0 +1,29 @@
+invalidPasswordMinLengthMessage=無効なパスワード: 最小{0}の長さが必要です。
+invalidPasswordMinLowerCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の小文字を含む必要があります。
+invalidPasswordMinDigitsMessage=無効なパスワード: 少なくとも{0}文字の数字を含む必要があります。
+invalidPasswordMinUpperCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の大文字を含む必要があります。
+invalidPasswordMinSpecialCharsMessage=無効なパスワード: 少なくとも{0}文字の特殊文字を含む必要があります。
+invalidPasswordNotUsernameMessage=無効なパスワード: ユーザー名と同じパスワードは禁止されています。
+invalidPasswordRegexPatternMessage=無効なパスワード: 正規表現パターンと一致しません。
+invalidPasswordHistoryMessage=無効なパスワード: 最近の{0}パスワードのいずれかと同じパスワードは禁止されています。
+invalidPasswordBlacklistedMessage=無効なパスワード: パスワードがブラックリストに含まれています。
+invalidPasswordGenericMessage=無効なパスワード: 新しいパスワードはパスワード・ポリシーと一致しません。
+
+ldapErrorInvalidCustomFilter=LDAPフィルターのカスタム設定が、「(」から開始または「)」で終了となっていません。
+ldapErrorConnectionTimeoutNotNumber=接続タイムアウトは数字でなければなりません
+ldapErrorReadTimeoutNotNumber=読み取りタイムアウトは数字でなければなりません
+ldapErrorMissingClientId=レルムロール・マッピングを使用しない場合は、クライアントIDは設定内で提供される必要があります。
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=グループの継承を維持することと、UIDメンバーシップ・タイプを使用することは同時にできません。
+ldapErrorCantWriteOnlyForReadOnlyLdap=LDAPプロバイダー・モードがWRITABLEではない場合は、write onlyを設定することはできません。
+ldapErrorCantWriteOnlyAndReadOnly=write-onlyとread-onlyを一緒に設定することはできません。
+ldapErrorCantEnableStartTlsAndConnectionPooling=StartTLSと接続プーリングの両方を有効にできません。
+
+clientRedirectURIsFragmentError=リダイレクトURIにURIフラグメントを含めることはできません。
+clientRootURLFragmentError=ルートURLにURLフラグメントを含めることはできません。
+
+pairwiseMalformedClientRedirectURI=クライアントに無効なリダイレクトURIが含まれていました。
+pairwiseClientRedirectURIsMissingHost=クライアントのリダイレクトURIには有効なホスト・コンポーネントが含まれている必要があります。
+pairwiseClientRedirectURIsMultipleHosts=設定されたセレクター識別子URIがない場合は、クライアントのリダイレクトURIは複数のホスト・コンポーネントを含むことはできません。
+pairwiseMalformedSectorIdentifierURI=不正なセレクター識別子URIです。
+pairwiseFailedToGetRedirectURIs=セクター識別子URIからリダイレクトURIを取得できませんでした。
+pairwiseRedirectURIsMismatch=クライアントのリダイレクトURIは、セクター識別子URIからフェッチされたリダイレクトURIと一致しません。
diff --git a/themes/custom-theme-template/admin/messages/messages_lt.properties b/themes/custom-theme-template/admin/messages/messages_lt.properties
new file mode 100644
index 0000000000000000000000000000000000000000..db0d38684be6af374ded96a3ff1ed681dcebbdb8
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_lt.properties
@@ -0,0 +1,24 @@
+invalidPasswordMinLengthMessage=Per trumpas slaptažodis: mažiausias ilgis {0}.
+invalidPasswordMinLowerCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} mažąją raidę.
+invalidPasswordMinDigitsMessage=Neteisingas slaptažodis: privaloma įvesti {0} skaitmenį.
+invalidPasswordMinUpperCaseCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} didžiąją raidę.
+invalidPasswordMinSpecialCharsMessage=Neteisingas slaptažodis: privaloma įvesti {0} specialų simbolį.
+invalidPasswordNotUsernameMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su naudotojo vardu.
+invalidPasswordRegexPatternMessage=Neteisingas slaptažodis: slaptažodis netenkina regex taisyklės(ių).
+invalidPasswordHistoryMessage=Neteisingas slaptažodis: slaptažodis negali sutapti su prieš tai buvusiais {0} slaptažodžiais.
+
+ldapErrorInvalidCustomFilter=Sukonfigūruotas LDAP filtras neprasideda "(" ir nesibaigia ")" simboliais.
+ldapErrorMissingClientId=Privaloma nurodyti kliento ID kai srities rolių susiejimas nėra nenaudojamas.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Grupių paveldėjimo ir UID narystės tipas kartu negali būti naudojami.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Negalima nustatyti rašymo rėžimo kuomet LDAP teikėjo rėžimas ne WRITABLE
+ldapErrorCantWriteOnlyAndReadOnly=Negalima nustatyti tik rašyti ir tik skaityti kartu
+
+clientRedirectURIsFragmentError=Nurodykite URI fragmentą, kurio negali būti peradresuojamuose URI adresuose
+clientRootURLFragmentError=Nurodykite URL fragmentą, kurio negali būti šakniniame URL adrese
+
+pairwiseMalformedClientRedirectURI=Klientas pateikė neteisingą nukreipimo nuorodą.
+pairwiseClientRedirectURIsMissingHost=Kliento nukreipimo nuorodos privalo būti nurodytos su serverio vardo komponentu.
+pairwiseClientRedirectURIsMultipleHosts=Kuomet nesukonfigūruotas sektoriaus identifikatoriaus URL, kliento nukreipimo nuorodos privalo talpinti ne daugiau kaip vieną skirtingą serverio vardo komponentą.
+pairwiseMalformedSectorIdentifierURI=Neteisinga sektoriaus identifikatoriaus URI.
+pairwiseFailedToGetRedirectURIs=Nepavyko gauti nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.
+pairwiseRedirectURIsMismatch=Kliento nukreipimo nuoroda neatitinka nukreipimo nuorodų iš sektoriaus identifikatoriaus URI.
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_lv.properties b/themes/custom-theme-template/admin/messages/messages_lv.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/themes/custom-theme-template/admin/messages/messages_nl.properties b/themes/custom-theme-template/admin/messages/messages_nl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4a04a5249d3c40b314d50ca205a3113a5ad6bbcb
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_nl.properties
@@ -0,0 +1,27 @@
+invalidPasswordMinLengthMessage=Ongeldig wachtwoord: de minimale lengte is {0} karakters.
+invalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} kleine letters bevatten.
+invalidPasswordMinDigitsMessage=Ongeldig wachtwoord: het moet minstens {0} getallen bevatten.
+invalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord: het moet minstens {0} hoofdletters bevatten.
+invalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord: het moet minstens {0} speciale karakters bevatten.
+invalidPasswordNotUsernameMessage=Ongeldig wachtwoord: het mag niet overeenkomen met de gebruikersnaam.
+invalidPasswordRegexPatternMessage=Ongeldig wachtwoord: het voldoet niet aan het door de beheerder ingestelde patroon.
+invalidPasswordHistoryMessage=Ongeldig wachtwoord: het mag niet overeen komen met een van de laatste {0} wachtwoorden.
+invalidPasswordGenericMessage=Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan het wachtwoordbeleid.
+
+ldapErrorInvalidCustomFilter=LDAP filter met aangepaste configuratie start niet met "(" of eindigt niet met ")".
+ldapErrorConnectionTimeoutNotNumber=Verbindingstimeout moet een getal zijn
+ldapErrorReadTimeoutNotNumber=Lees-timeout moet een getal zijn
+ldapErrorMissingClientId=Client ID moet ingesteld zijn als Realm Roles Mapping niet gebruikt wordt.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Kan groepsovererving niet behouden bij UID-lidmaatschapstype.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Alleen-schrijven niet mogelijk als LDAP provider mode niet WRITABLE is
+ldapErrorCantWriteOnlyAndReadOnly=Alleen-schrijven en alleen-lezen mogen niet tegelijk ingesteld zijn
+
+clientRedirectURIsFragmentError=Redirect URIs mogen geen URI fragment bevatten
+clientRootURLFragmentError=Root URL mag geen URL fragment bevatten
+
+pairwiseMalformedClientRedirectURI=Client heeft een ongeldige redirect URI.
+pairwiseClientRedirectURIsMissingHost=Client redirect URIs moeten een geldige host-component bevatten.
+pairwiseClientRedirectURIsMultipleHosts=Zonder een geconfigureerde Sector Identifier URI mogen client redirect URIs niet meerdere host componenten hebben.
+pairwiseMalformedSectorIdentifierURI=Onjuist notatie in Sector Identifier URI.
+pairwiseFailedToGetRedirectURIs=Kon geen redirect URIs verkrijgen van de Sector Identifier URI.
+pairwiseRedirectURIsMismatch=Client redirect URIs komen niet overeen met redict URIs ontvangen van de Sector Identifier URI.
diff --git a/themes/custom-theme-template/admin/messages/messages_no.properties b/themes/custom-theme-template/admin/messages/messages_no.properties
new file mode 100644
index 0000000000000000000000000000000000000000..373e0e16d132c4ca782363f05986b3cf08b35e9d
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_no.properties
@@ -0,0 +1,14 @@
+invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
+invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: må inneholde minst {0} små bokstaver.
+invalidPasswordMinDigitsMessage=Ugyldig passord: må inneholde minst {0} sifre.
+invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: må inneholde minst {0} store bokstaver.
+invalidPasswordMinSpecialCharsMessage=Ugyldig passord: må inneholde minst {0} spesialtegn.
+invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke være likt brukernavn.
+invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-mønster.
+invalidPasswordHistoryMessage=Ugyldig passord: kan ikke være likt noen av de {0} foregående passordene.
+
+ldapErrorInvalidCustomFilter=Tilpasset konfigurasjon av LDAP-filter starter ikke med "(" eller slutter ikke med ")".
+ldapErrorMissingClientId=KlientID må være tilgjengelig i config når sikkerhetsdomenerollemapping ikke brukes.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Ikke mulig å bevare gruppearv og samtidig bruke UID medlemskapstype.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Kan ikke sette write-only når LDAP leverandør-modus ikke er WRITABLE
+ldapErrorCantWriteOnlyAndReadOnly=Kan ikke sette både write-only og read-only
diff --git a/themes/custom-theme-template/admin/messages/messages_pl.properties b/themes/custom-theme-template/admin/messages/messages_pl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/themes/custom-theme-template/admin/messages/messages_pt_BR.properties b/themes/custom-theme-template/admin/messages/messages_pt_BR.properties
new file mode 100644
index 0000000000000000000000000000000000000000..cc4a29c7c57bee3fb4f5bcc3695c14e7f0f4e626
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_pt_BR.properties
@@ -0,0 +1,17 @@
+invalidPasswordMinLengthMessage=Senha inválida: deve conter ao menos {0} caracteres.
+invalidPasswordMinLowerCaseCharsMessage=Senha inválida: deve conter ao menos {0} caracteres minúsculos.
+invalidPasswordMinDigitsMessage=Senha inválida: deve conter ao menos {0} digitos numéricos.
+invalidPasswordMinUpperCaseCharsMessage=Senha inválida: deve conter ao menos {0} caracteres maiúsculos.
+invalidPasswordMinSpecialCharsMessage=Senha inválida: deve conter ao menos {0} caracteres especiais.
+invalidPasswordNotUsernameMessage=Senha inválida: não deve ser igual ao nome de usuário.
+invalidPasswordRegexPatternMessage=Senha inválida: falha ao passar por padrões.
+invalidPasswordHistoryMessage=Senha inválida: não deve ser igual às últimas {0} senhas.
+
+ldapErrorInvalidCustomFilter=Filtro LDAP não inicia com "(" ou não termina com ")".
+ldapErrorMissingClientId=ID do cliente precisa ser definido na configuração quando mapeamentos de Roles do Realm não é utilizado.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Não é possível preservar herança de grupos e usar tipo de associação de UID ao mesmo tempo.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Não é possível definir modo de somente escrita quando o provedor LDAP não suporta escrita
+ldapErrorCantWriteOnlyAndReadOnly=Não é possível definir somente escrita e somente leitura ao mesmo tempo
+
+clientRedirectURIsFragmentError=URIs de redirecionamento não podem conter fragmentos
+clientRootURLFragmentError=URL raiz não pode conter fragmentos
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_ru.properties b/themes/custom-theme-template/admin/messages/messages_ru.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2ac5311d6880badf650c39e76bf3fe34276ff8b2
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_ru.properties
@@ -0,0 +1,25 @@
+invalidPasswordMinLengthMessage=Некорректный пароль: длина пароля должна быть не менее {0} символов(а).
+invalidPasswordMinDigitsMessage=Некорректный пароль: должен содержать не менее {0} цифр(ы).
+invalidPasswordMinLowerCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в нижнем регистре.
+invalidPasswordMinUpperCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в верхнем регистре.
+invalidPasswordMinSpecialCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} спецсимволов(а).
+invalidPasswordNotUsernameMessage=Некорректный пароль: пароль не должен совпадать с именем пользователя.
+invalidPasswordRegexPatternMessage=Некорректный пароль: пароль не прошел проверку по регулярному выражению.
+invalidPasswordHistoryMessage=Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролем(ями).
+invalidPasswordGenericMessage=Некорректный пароль: новый пароль не соответствует правилам пароля.
+
+ldapErrorInvalidCustomFilter=Сконфигурированный пользователем фильтр LDAP не должен начинаться с "(" или заканчиваться на ")".
+ldapErrorMissingClientId=Client ID должен быть настроен в конфигурации, если не используется сопоставление ролей в realm.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Не удалось унаследовать группу и использовать членство UID типа вместе.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Невозможно установить режим "только на запись", когда LDAP провайдер не в режиме WRITABLE
+ldapErrorCantWriteOnlyAndReadOnly=Невозможно одновременно установить режимы "только на чтение" и "только на запись"
+
+clientRedirectURIsFragmentError=URI перенаправления не должен содержать фрагмент URI
+clientRootURLFragmentError=Корневой URL не должен содержать фрагмент URL 
+
+pairwiseMalformedClientRedirectURI=Клиент содержит некорректный URI перенаправления.
+pairwiseClientRedirectURIsMissingHost=URI перенаправления клиента должен содержать корректный компонент хоста.
+pairwiseClientRedirectURIsMultipleHosts=Без конфигурации по части идентификатора URI, URI перенаправления клиента не может содержать несколько компонентов хоста.
+pairwiseMalformedSectorIdentifierURI=Искаженная часть идентификатора URI.
+pairwiseFailedToGetRedirectURIs=Не удалось получить идентификаторы URI перенаправления из части идентификатора URI.
+pairwiseRedirectURIsMismatch=Клиент URI переадресации не соответствует URI переадресации, полученной из части идентификатора URI.
diff --git a/themes/custom-theme-template/admin/messages/messages_uk.properties b/themes/custom-theme-template/admin/messages/messages_uk.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e29a3269861626c4d67f1d5b5d7b301439f7ff9a
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_uk.properties
@@ -0,0 +1,67 @@
+invalidPasswordMinLengthMessage=Невірний пароль: довжина пароля повинна бути не менше {0} символів(а).
+invalidPasswordMaxLengthMessage=Невірний пароль: довжина пароля повинна бути не більше {0} символів(а).
+invalidPasswordMinLowerCaseCharsMessage=Невірний пароль: пароль має містити щонайменше {0} символів у нижньому регістрі.
+invalidPasswordMinDigitsMessage=Невірний пароль: пароль має містити принаймні {0} цифр.
+invalidPasswordMinUpperCaseCharsMessage=Невірний пароль: пароль має містити щонайменше {0} символів у верхньому регістрі.
+invalidPasswordMinSpecialCharsMessage=Невірний пароль: пароль має містити щонайменше {0} спеціальних символів.
+invalidPasswordNotUsernameMessage=Невірний пароль: пароль не повинен збігатися з іменем користувача.
+invalidPasswordNotEmailMessage=Невірний пароль: пароль не повинен збігатися з адресою електронної пошти.
+invalidPasswordRegexPatternMessage=Невірний пароль: пароль не відповідає шаблону(ам) регулярного виразу.
+invalidPasswordHistoryMessage=Недійсний пароль: пароль не повинен збігатися з жодним з останніх {0} паролів.
+invalidPasswordBlacklistedMessage=Невірний пароль: пароль у чорному списку.
+invalidPasswordGenericMessage=Невірний пароль: новий пароль не відповідає політиці паролів.
+
+ldapErrorEditModeMandatory=Режим редагування є обов''язковим
+ldapErrorInvalidCustomFilter=Налаштований власноруч фільтр LDAP не починається з "(" або не закінчується на ")".
+ldapErrorConnectionTimeoutNotNumber=Час очікування підключення має бути числом
+ldapErrorReadTimeoutNotNumber=Час очікування читання має бути числом
+ldapErrorMissingClientId=В конфігурації потрібно вказати ідентифікатор клієнта, якщо не використовується відображення ролей realm.
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=Не вдалося успадкувати групу та використати тип членства UID разом.
+ldapErrorCantWriteOnlyForReadOnlyLdap=Неможливо встановити "тільки запис", коли LDAP-провайдер налаштований в режимі відмінному від "WRITABLE"
+ldapErrorCantWriteOnlyAndReadOnly=Неможливо встановити тільки запис і тільки читання разом
+ldapErrorCantEnableStartTlsAndConnectionPooling=Неможливо ввімкнути одночасно StartTLS і пул з''єднань.
+ldapErrorCantEnableUnsyncedAndImportOff=Неможливо вимкнути імпорт користувачів, коли режим LDAP-провайдера - "UNSYNCED"
+ldapErrorMissingGroupsPathGroup=Групи не існує - спочатку створіть групу за вказаним шляхом
+ldapErrorValidatePasswordPolicyAvailableForWritableOnly=Політика перевірки паролів застосовна лише в режимі редагування WRITABLE
+
+clientRedirectURIsFragmentError=URI перенаправлення не повинні містити фрагмент URI
+clientRootURLFragmentError=Коренева URL-адреса не повинна містити фрагмент URL-адреси
+clientRootURLIllegalSchemeError=Коренева URL-адреса містить невірну схему
+clientBaseURLIllegalSchemeError=Базова URL-адреса містить невірну схему
+backchannelLogoutUrlIllegalSchemeError="BackChannel logout URL" містить невірну схему
+clientRedirectURIsIllegalSchemeError=URI перенаправлення містить невірну схему
+clientBaseURLInvalid=Невірна базова URL-адреса
+clientRootURLInvalid=Невірна коренева URL-адреса
+clientRedirectURIsInvalid=Невірний URI перенаправлення
+backchannelLogoutUrlIsInvalid=Невірний "BackChannel logout URL"
+
+
+pairwiseMalformedClientRedirectURI=Клієнт містить невірний URI перенаправлення.
+pairwiseClientRedirectURIsMissingHost=URI перенаправлення клієнта повинні містити вірний компонент хоста.
+pairwiseClientRedirectURIsMultipleHosts=Без налаштованого URI ідентифікатора сектору, URI перенаправлення клієнта не повинні містити кілька компонентів хоста.
+pairwiseMalformedSectorIdentifierURI=Невірний URI ідентифікатор.
+pairwiseFailedToGetRedirectURIs=Не вдалося отримати URI перенаправлення з частини ідентифікатора URI.
+pairwiseRedirectURIsMismatch=URI перенаправлення клієнта не відповідає URI перенаправлення, отриманим з URI ідентифікатора сектора.
+
+duplicatedJwksSettings=Перемикач "Використовувати JWKS" і перемикач "Використовувати JWKS URL" не можуть бути ввімкнені одночасно.
+
+error-invalid-value=Невірне значення.
+error-invalid-blank=Будь ласка, вкажіть значення.
+error-empty=Будь ласка, вкажіть значення.
+error-invalid-length=Довжина атрибуту {0} повинна бути між {1} і {2}.
+error-invalid-length-too-short=Довжина атрибуту {0} повинна бути не менше ніж {1} символ(а).
+error-invalid-length-too-long=Довжина атрибуту {0} повинна бути не більше ніж {2} символ(а).
+error-invalid-email=Невірна адреса електронної пошти.
+error-invalid-number=Невірний номер.
+error-number-out-of-range=Атрибут {0} має бути числом між {1} і {2}.
+error-number-out-of-range-too-small=Значення атрибуту {0} повинно бути не менше ніж {1}.
+error-number-out-of-range-too-big=Значення атрибуту {0} повинно бути не більше ніж {2}.
+error-pattern-no-match=Невірне значення.
+error-invalid-uri=Невірний URL.
+error-invalid-uri-scheme=Невірна схема URL.
+error-invalid-uri-fragment=Невірний фрагмент URL.
+error-user-attribute-required=Будь ласка, вкажіть атрибут {0}.
+error-invalid-date=Вказана невірна дата в атрибуті {0}.
+error-user-attribute-read-only=Атрибут {0} лише для читання.
+error-username-invalid-character={0} містить невірний символ.
+error-person-name-invalid-character={0} містить невірний символ.
\ No newline at end of file
diff --git a/themes/custom-theme-template/admin/messages/messages_zh_CN.properties b/themes/custom-theme-template/admin/messages/messages_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..a04cc03fc7347bf0826d53fcf1e3cbfd4e5b5240
--- /dev/null
+++ b/themes/custom-theme-template/admin/messages/messages_zh_CN.properties
@@ -0,0 +1,25 @@
+invalidPasswordMinLengthMessage=无效的密码:最短长度 {0}.
+invalidPasswordMinLowerCaseCharsMessage=无效的密码:至少包含 {0} 小写字母
+invalidPasswordMinDigitsMessage=无效的密码:至少包含 {0} 个数字
+invalidPasswordMinUpperCaseCharsMessage=无效的密码:最短长度 {0} 大写字母
+invalidPasswordMinSpecialCharsMessage=无效的密码:最短长度 {0} 特殊字符
+invalidPasswordNotUsernameMessage=无效的密码: 不可以与用户名相同
+invalidPasswordRegexPatternMessage=无效的密码: 无法与正则表达式匹配
+invalidPasswordHistoryMessage=无效的密码:不能与最后使用的 {0} 个密码相同
+
+ldapErrorInvalidCustomFilter=定制的 LDAP过滤器不是以 "(" 开头或以 ")"结尾.
+ldapErrorConnectionTimeoutNotNumber=Connection Timeout 必须是个数字
+ldapErrorMissingClientId=当域角色映射未启用时,客户端 ID 需要指定。
+ldapErrorCantPreserveGroupInheritanceWithUIDMembershipType=无法在使用UID成员类型的同时维护组继承属性。
+ldapErrorCantWriteOnlyForReadOnlyLdap=当LDAP提供方不是可写模式时,无法设置只写
+ldapErrorCantWriteOnlyAndReadOnly=无法同时设置只读和只写
+
+clientRedirectURIsFragmentError=重定向URL不应包含URI片段
+clientRootURLFragmentError=根URL 不应包含 URL 片段
+
+pairwiseMalformedClientRedirectURI=客户端包含一个无效的重定向URL
+pairwiseClientRedirectURIsMissingHost=客户端重定向URL需要有一个有效的主机
+pairwiseClientRedirectURIsMultipleHosts=Without a configured Sector Identifier URI, client redirect URIs must not contain multiple host components.
+pairwiseMalformedSectorIdentifierURI=Malformed Sector Identifier URI.
+pairwiseFailedToGetRedirectURIs=无法从服务器获得重定向URL
+pairwiseRedirectURIsMismatch=客户端的重定向URI与服务器端获取的URI配置不匹配。
diff --git a/themes/custom-theme-template/admin/theme.properties b/themes/custom-theme-template/admin/theme.properties
new file mode 100644
index 0000000000000000000000000000000000000000..3ceb3374652322eea9d6672a1bb879772bd4957e
--- /dev/null
+++ b/themes/custom-theme-template/admin/theme.properties
@@ -0,0 +1 @@
+locales=ar,ca,de,el,en,es,fa,fr,fi,it,ja,lt,lv,nl,no,pl,pt-BR,ru,sv,uk,zh-CN
diff --git a/themes/custom-theme-template/email/html/email-test.ftl b/themes/custom-theme-template/email/html/email-test.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..bca248043c0f5277fc11252388c3d07f6d710e89
--- /dev/null
+++ b/themes/custom-theme-template/email/html/email-test.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("emailTestBodyHtml",realmName))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/email-update-confirmation.ftl b/themes/custom-theme-template/email/html/email-update-confirmation.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..d618ed7a4ed91605e4dbeb3323750dcf227baa51
--- /dev/null
+++ b/themes/custom-theme-template/email/html/email-update-confirmation.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("emailUpdateConfirmationBodyHtml",link, newEmail, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/email-verification-with-code.ftl b/themes/custom-theme-template/email/html/email-verification-with-code.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..6a73f50ad374cb0851bf722177b83ae4b0113a4e
--- /dev/null
+++ b/themes/custom-theme-template/email/html/email-verification-with-code.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("emailVerificationBodyCodeHtml",code))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/email-verification.ftl b/themes/custom-theme-template/email/html/email-verification.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..9a2e318c886eace53d54e525ad4347834f30ba0c
--- /dev/null
+++ b/themes/custom-theme-template/email/html/email-verification.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("emailVerificationBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/event-login_error.ftl b/themes/custom-theme-template/email/html/event-login_error.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..7ab9401d84b9d71040beea626b337d772e180266
--- /dev/null
+++ b/themes/custom-theme-template/email/html/event-login_error.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("eventLoginErrorBodyHtml",event.date,event.ipAddress))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/event-remove_totp.ftl b/themes/custom-theme-template/email/html/event-remove_totp.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..6058bbe00a91998b9be9ab851205690c6d62635f
--- /dev/null
+++ b/themes/custom-theme-template/email/html/event-remove_totp.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("eventRemoveTotpBodyHtml",event.date, event.ipAddress))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/event-update_password.ftl b/themes/custom-theme-template/email/html/event-update_password.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..8a802ecc4df10886706fb54468095cd2d8944d06
--- /dev/null
+++ b/themes/custom-theme-template/email/html/event-update_password.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("eventUpdatePasswordBodyHtml",event.date, event.ipAddress))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/event-update_totp.ftl b/themes/custom-theme-template/email/html/event-update_totp.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..f58c38ab643e2176d047a7393dcc43afe104297b
--- /dev/null
+++ b/themes/custom-theme-template/email/html/event-update_totp.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("eventUpdateTotpBodyHtml",event.date, event.ipAddress))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/executeActions.ftl b/themes/custom-theme-template/email/html/executeActions.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..73d4075502c0fade5bc172fc30eaa224ef83441b
--- /dev/null
+++ b/themes/custom-theme-template/email/html/executeActions.ftl
@@ -0,0 +1,8 @@
+<#outputformat "plainText">
+<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#sep></#items></#list></#if></#assign>
+</#outputformat>
+
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("executeActionsBodyHtml",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration)))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/identity-provider-link.ftl b/themes/custom-theme-template/email/html/identity-provider-link.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..6b4381e1a9bba9265f85201153decfbe933fe113
--- /dev/null
+++ b/themes/custom-theme-template/email/html/identity-provider-link.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("identityProviderLinkBodyHtml", identityProviderDisplayName, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration)))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/password-reset.ftl b/themes/custom-theme-template/email/html/password-reset.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..b0de263294f17cafd1575628f6e7f31c1c44cbb2
--- /dev/null
+++ b/themes/custom-theme-template/email/html/password-reset.ftl
@@ -0,0 +1,4 @@
+<#import "template.ftl" as layout>
+<@layout.emailLayout>
+${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
+</@layout.emailLayout>
diff --git a/themes/custom-theme-template/email/html/template.ftl b/themes/custom-theme-template/email/html/template.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..fd2ea5df2a955bc15c0f3c22ffb0894ba1815acd
--- /dev/null
+++ b/themes/custom-theme-template/email/html/template.ftl
@@ -0,0 +1,7 @@
+<#macro emailLayout>
+<html>
+<body>
+    <#nested>
+</body>
+</html>
+</#macro>
diff --git a/themes/custom-theme-template/email/messages/messages_ar.properties b/themes/custom-theme-template/email/messages/messages_ar.properties
new file mode 100644
index 0000000000000000000000000000000000000000..7d3529aea9889dce8fbb75a84296286d255e34ce
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_ar.properties
@@ -0,0 +1,47 @@
+emailVerificationSubject=التحقق من البريد الإلكتروني
+emailVerificationBody=قام شخص ما بإنشاء حساب {2} بعنوان البريد الإلكتروني هذا. إذا كان هذا أنت، فانقر على الرابط أدناه للتحقق من عنوان بريدك الإلكتروني\n\n{0}\n\nستنتهي صلاحية هذا الرابط خلال {3}.\n\nإذا لم تكن قد أنشأت هذا الحساب، فقط تجاهل هذه الرسالة.
+emailVerificationBodyHtml=<p style="direction: rtl;">قام شخص ما بإنشاء حساب {2} بعنوان البريد الإلكتروني هذا. إذا كان هذا أنت، فانقر على الرابط أدناه للتحقق من عنوان بريدك الإلكتروني</p><p style="direction: rtl;"><a href="{0}">رابط التحقق من البريد الإلكتروني</a></p><p style="direction: rtl;">ستنتهي صلاحية هذا الرابط خلال {3}.</p><p style="direction: rtl;">إذا لم تكن قد أنشأت هذا الحساب، فقط تجاهل هذه الرسالة.</p>
+emailUpdateConfirmationSubject=التحقق من البريد الإلكتروني الجديد
+emailUpdateConfirmationBody=لتحديث حساب {2} الخاص بك بعنوان البريد الإلكتروني {1}، انقر على الرابط أدناه\n\n{0}\n\nستنتهي صلاحية هذا الرابط خلال {3}.\n\nإذا كنت لا تريد القيام بهذا التعديل، فقط تجاهل هذه الرسالة.
+emailUpdateConfirmationBodyHtml=<p style="direction: rtl;">لتحديث حساب {2} الخاص بك بعنوان البريد الإلكتروني {1}, انقر على الرابط أدناه</p><p style="direction: rtl;"><a href="{0}">{0}</a></p><p style="direction: rtl;">ستنتهي صلاحية هذا الرابط خلال {3}.</p><p style="direction: rtl;">إذا كنت لا تريد القيام بهذا التعديل، فقط تجاهل هذه الرسالة.</p>
+emailTestSubject=[KEYCLOAK] - رسالة تجربة
+emailTestBody=هذه رسالة تجربة
+emailTestBodyHtml=<p style="direction: rtl;">هذه رسالة تجربة</p>
+identityProviderLinkSubject=ربط {0}
+identityProviderLinkBody=قام شخص ما بطلب ربط الحساب "{1}" بالحساب "{0}" الخاص بالمستخدم {2} . إذا كان هذا أنت، فانقر على الرابط أدناه لإتمام عملية ربط الحسابات\n\n{3}\n\nستنتهي صلاحية هذا الرابط خلال {5}.\n\nإذا كنت لا تريد ربط الحساب، فقط تجاهل هذه الرسالة. إذا قمت بربط الحسابات، فستتمكن من تسجيل الدخول إلى {1} من خلال {0}.
+identityProviderLinkBodyHtml=<p style="direction: rtl;">قام شخص ما بطلب ربط الحساب <b>{1}</b> بالحساب <b>{0}</b> الخاص بالمستخدم {2}. إذا كان هذا أنت، فانقر على الرابط أدناه لإتمام عملية ربط الحسابات</p><p style="direction: rtl;"><a href="{3}">رابط لتأكيد ربط الحساب</a></p><p style="direction: rtl;">ستنتهي صلاحية هذا الرابط خلال {5}.</p><p style="direction: rtl;">إذا كنت لا تريد ربط الحساب، فقط تجاهل هذه الرسالة. إذا قمت بربط الحسابات، فستتمكن من تسجيل الدخول إلى {1} من خلال {0}.</p>
+passwordResetSubject=إعادة تعيين كلمة المرور
+passwordResetBody=قام شخص ما بطلب تغيير معلومات الدخول للحساب {2}. إذا كان هذا أنت، فانقر على الرابط أدناه لإعادة تعيين معلومات الدخول.\n\n{0}\n\nستنتهي صلاحية هذا الرابط خلال {3}.\n\nإذا كنت لا تريد إعادة تعيين معلومات الدخول، فقط تجاهل هذه الرسالة.
+passwordResetBodyHtml=<p style="direction: rtl;">قام شخص ما بطلب تغيير معلومات الدخول للحساب {2}. إذا كان هذا أنت، فانقر على الرابط أدناه لإعادة تعيين معلومات الدخول.</p><p style="direction: rtl;"><a href="{0}">رابط إعادة تعيين معلومات الدخول للحساب</a></p><p style="direction: rtl;">ستنتهي صلاحية هذا الرابط خلال {3}.</p><p style="direction: rtl;">إذا كنت لا تريد إعادة تعيين معلومات الدخول، فقط تجاهل هذه الرسالة.</p>
+executeActionsSubject=تحديث بيانات حسابك
+executeActionsBody=تلقيت طلب من مسؤول النظام لتحديث بيانات حسابك {2} والقيام بالإجراءات المطلوبة التالية: {3}. انقر على الرابط أدناه للبدء.\n\n{0}\n\nستنتهي صلاحية هذا الرابط خلال {4}.\n\nإذا لم تكن على علم بأن مسؤول النظام قد طلب ذلك، فتجاهل هذه الرسالة ولن يتم تغيير أي شيء.
+executeActionsBodyHtml=<p style="direction: rtl;">تلقيت طلب من مسؤول النظام لتحديث بيانات حسابك {2} والقيام بالإجراءات المطلوبة التالية: {3}. انقر على الرابط أدناه للبدء.</p><p style="direction: rtl;"><a href="{0}">رابط تحديث بيانات الحساب</a></p><p style="direction: rtl;">ستنتهي صلاحية هذا الرابط خلال {4}.</p><p style="direction: rtl;">إذا لم تكن على علم بأن مسؤول النظام قد طلب ذلك، فتجاهل هذه الرسالة ولن يتم تغيير أي شيء.</p>
+eventLoginErrorSubject=خطأ في تسجيل الدخول
+eventLoginErrorBody=تم رصد محاولة دخول فاشلة على حسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.
+eventLoginErrorBodyHtml=<p style="direction: rtl;">تم رصد محاولة دخول فاشلة على حسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.</p>
+eventRemoveTotpSubject=إزالة رمز التحقق
+eventRemoveTotpBody=تم إزالة خاصية رمز التحقق من حسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.
+eventRemoveTotpBodyHtml=<p style="direction: rtl;">تم إزالة خاصية رمز التحقق من حسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.</p>
+eventUpdatePasswordSubject=تحديث كلمة المرور
+eventUpdatePasswordBody=تم تغيير كلمة المرور الخاصة بك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.
+eventUpdatePasswordBodyHtml=<p style="direction: rtl;">تم تغيير كلمة المرور الخاصة بك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.</p>
+eventUpdateTotpSubject=تحديث خاصية رمز التحقق
+eventUpdateTotpBody=تم تحديث حاصية رمز التحقق لحسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.
+eventUpdateTotpBodyHtml=<p style="direction: rtl;">تم تحديث حاصية رمز التحقق لحسابك في {0} ومن {1}. إذا لم تكن أنت، يرجى التواصل مع مسؤول النظام.</p>
+
+requiredAction.CONFIGURE_TOTP=إعداد خاصية رمز التحقق
+requiredAction.TERMS_AND_CONDITIONS=الأحكام والشروط
+requiredAction.UPDATE_PASSWORD=تحديث كلمة المرور
+requiredAction.UPDATE_PROFILE=تحديث الملف التعريفي
+requiredAction.VERIFY_EMAIL=التحقق من البريد الإلكتروني
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=توليد رموز مصادقة الاسترداد
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#ثانية|3#ثواني|9<ثانية}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#دقيقة|3#دقائق|9<دقيقة}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#ساعة|3#ساعات|9<ساعة}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#يوم|3#أيام|9<يوم}
+
+emailVerificationBodyCode=يرجى التحقق من عنوان بريدك الإلكتروني عن طريق إدخال الرمز التالي.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p style="direction: rtl;">يرجى التحقق من عنوان بريدك الإلكتروني عن طريق إدخال الرمز التالي.</p><p style="direction: rtl;"><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_ca.properties b/themes/custom-theme-template/email/messages/messages_ca.properties
new file mode 100644
index 0000000000000000000000000000000000000000..99ee8a29bb04ffc652cdac1cd1b67761b9cd7dd8
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_ca.properties
@@ -0,0 +1,50 @@
+emailVerificationSubject=Verificació de l''adreça electrònica
+emailVerificationBody=Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si heu estat vosaltres, feu clic a l''enllaç següent per a verificar la vostra adreça de correu electrònic.\n\n{0}\n\nAquest enllaç caducarà en {3}.\n\nSi no heu creat aquest compte, simplement ignoreu aquest missatge.
+emailVerificationBodyHtml=<p>Algú ha creat un compte de {2} amb aquesta adreça de correu electrònic. Si heu estat vosaltres, feu clic a l''enllaç següent per a verificar la vostra adreça de correu electrònic.</p><p><a href="{0}">Enllaç a la verificació de l''adreça de correu electrònic</a></p><p> Aquest enllaç caducarà en {3}.</p><p> Si no heu creat aquest compte, simplement ignoreu aquest missatge.</p>
+emailUpdateConfirmationSubject=Verifiqueu l''adreça nova
+emailUpdateConfirmationBody=Per a actualitzar el vostre compte {2} amb l''adreça de correu electrònic {1}, feu clic a l''enllaç de sota\n\n{0}\n\nAquest enllaç caducarà en {3}.\n\nSi no voleu continuar amb aquesta modificació, simplement ignoreu aquest missatge.
+emailUpdateConfirmationBodyHtml=<p>Per a actualitzar el vostre compte {2} amb l''adreça de correu electrònic {1}, feu clic a l''enllaç de sota</p><p><a href="{0}">{0}</a></p><p>Aquest enllaç caducarà en {3}.</p><p>Si no voleu continuar amb aquesta modificació, simplement ignoreu aquest missatge.</p>
+emailTestSubject=[KEYCLOAK] - missatge de prova SMTP
+emailTestBody=Aquest és un missatge de prova
+emailTestBodyHtml=<p>Aquest és un missatge de prova</p>
+identityProviderLinkSubject=Enllaç a {0}
+identityProviderLinkBody=Algú ha sol·licitat enllaçar el vostre compte «{1}» amb el compte «{0}» de l''usuari {2}. Si heu estat vosaltres, feu clic a l''enllaç de sota per a enllaçar els comptes\n\n{3}\n\nAquest enllaç caducarà en {5}.\n\nSi no voleu enllaçar el compte, simplement ignoreu aquest missatge. Si enllaceu els comptes, podreu identificar-vos a {1} a través de {0}.
+identityProviderLinkBodyHtml=<p>Algú ha sol·licitat enllaçar el vostre compte <b>{1}</b> amb el compte <b>{0}</b> de l''usuari {2}. Si heu estat vosaltres, feu clic a l''enllaç de sota per a enllaçar els comptes</p><a href="{3}">Enllaç per a confirmar l''enllaçat de comptes</a><p><p>Aquest enllaç caducarà en {5}.</p><p>Si no voleu enllaçar el compte, simplement ignoreu aquest missatge. Si enllaceu els comptes, podreu identificar-vos a {1} a través de {0}.</p>
+passwordResetSubject=Restabliu la contrasenya
+passwordResetBody=Algú ha demanat canviar les credencials del vostre compte de {2}. Si heu estat vosaltres, feu clic a l''enllaç següent per a restablir-les.\n\n{0}\n\nAquest enllaç i codi caducaran en {3}.\n\nSi no voleu restablir les vostres credencials, simplement ignoreu aquest missatge i no es realitzarà cap canvi.
+passwordResetBodyHtml=<p>Algú ha demanat canviar les credencials del vostre compte de {2}. Si heu estat vosaltres, feu clic a l''enllaç següent per a restablir-les.</p><p><a href="{0}">Enllaç per a restablir les credencials</a></p><p>Aquest enllaç caducarà en {3}.</p><p>Si no voleu restablir les vostres credencials, simplement ignoreu aquest missatge i no es realitzarà cap canvi.</p>
+executeActionsSubject=Actualitzeu el vostre compte
+executeActionsBody=L''administrador ha sol·licitat que actualitzeu el vostre compte de {2} realitzant les accions següents: {3}. Feu clic a l''enllaç següent per a iniciar aquest procés.\n\n{0}\n\nAquest enllaç caducarà en {4}.\n\nSi no esteu al corrent que l''administrador hagi sol·licitat això, simplement ignoreu aquest missatge i no es realitzarà cap canvi.
+executeActionsBodyHtml=<p>L''administrador ha sol·licitat que actualitzeu el vostre compte de {2} realitzant les accions següents: {3}. Feu clic a l''enllaç següent per iniciar aquest procés.</p><p><a href="{0}">Enllaç a l''actualització del compte</a></p><p>Aquest enllaç caducarà en {4}.</p><p>Si no esteu al corrent que l''administrador hagi sol·licitat això, simplement ignoreu aquest missatge i no es realitzarà cap canvi.</p>
+eventLoginErrorSubject=Fallada en l''inici de sessió
+eventLoginErrorBody=S''ha detectat un intent d''accés fallit al vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventLoginErrorBodyHtml=<p>S''ha detectat un intent d''accés fallit al vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventRemoveTotpSubject=Eliminació de l''OTP
+eventRemoveTotpBody=S''ha eliminat l''OTP del vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventRemoveTotpBodyHtml=<p>S''ha eliminat l''OTP del vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventUpdatePasswordSubject=Actualització de la contrasenya
+eventUpdatePasswordBody=S''ha actualitzat la vostra contrasenya el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventUpdatePasswordBodyHtml=<p>S''ha actualitzat la vostra contrasenya el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventUpdateTotpSubject=Actualització de l''OTP
+eventUpdateTotpBody=S''ha actualitzat l''OTP al vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.
+eventUpdateTotpBodyHtml=<p>S''ha actualitzat l''OTP al vostre compte el {0} des de {1}. Si no heu estat vosaltres, contacteu amb l''administrador.</p>
+
+requiredAction.CONFIGURE_TOTP=Configura l''OTP
+requiredAction.TERMS_AND_CONDITIONS=Termes i condicions
+requiredAction.UPDATE_PASSWORD=Actualitza la contrasenya
+requiredAction.UPDATE_PROFILE=Actualitza el perfil
+requiredAction.VERIFY_EMAIL=Verifica el correu electrònic
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Genera codis de recuperació
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be ''{0,choice,0#minut|1#minuta|2#minuty|2<minut}''
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#segons|1#segon|1<segons}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minuts|1#minut|1<minuts}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#hores|1#hora|1<hores}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dies|1#dia|1<dies}
+
+emailVerificationBodyCode=Verifiqueu el vostre correu electrònic introduint el codi següent.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Verifiqueu el vostre correu electrònic introduint el codi següent.</p><p> <b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_cs.properties b/themes/custom-theme-template/email/messages/messages_cs.properties
new file mode 100644
index 0000000000000000000000000000000000000000..81ed905b4486e11367c15dc31608171e8b8cb77b
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_cs.properties
@@ -0,0 +1,50 @@
+emailVerificationSubject=Ověření e-mailu
+emailVerificationBody=Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu \n\n{0}\n\nTento odkaz vyprší za {3}.\n\nPokud jste tento účet nevytvořili, tuto zprávu ignorujte.
+emailVerificationBodyHtml=<p>Někdo vytvořil účet {2} s touto e-mailovou adresou. Pokud jste to vy, klikněte na níže uvedený odkaz a ověřte svou e-mailovou adresu. </p><p><a href="{0}">Odkaz na ověření e-mailové adresy</a></p><p>Platnost odkazu vyprší za {3}.</p><p>Pokud jste tento účet nevytvořili, tuto zprávu ignorujte.</p>
+emailUpdateConfirmationSubject=Ověření nového e-mailu
+emailUpdateConfirmationBody=Pro aktualizaci e-mailové adresy {1} u vašeho účtu {2} klikněte na odkaz níže\n\n{0}\n\nTento odkaz expiruje za {3}.\n\nPokud tuto změnu nechcete provést, ignorujte tuto zprávu.
+emailUpdateConfirmationBodyHtml=<p>Pro aktualizaci e-mailové adresy {1} u vašeho účtu {2} klikněte na odkaz níže</p><p><a href="{0}">{0}</a></p><p>Tento odkaz expiruje za {3}.</p><p>Pokud tuto změnu nechcete provést, ignorujte tuto zprávu.</p>
+emailTestSubject=[KEYCLOAK] - testovací zpráva
+emailTestBody=Toto je testovací zpráva
+emailTestBodyHtml=<p>Toto je testovací zpráva </p>
+identityProviderLinkSubject=Odkaz {0}
+identityProviderLinkBody=Někdo chce propojit váš účet "{1}" s účtem "{0}" uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty. \n\n{3}\n\nPlatnost tohoto odkazu je {5}.\n\nPokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.
+identityProviderLinkBodyHtml=<p>Někdo chce propojit váš účet <b>{1}</b> s účtem <b>{0}</b> uživatele {2}. Pokud jste to vy, klikněte na níže uvedený odkaz a propojte účty.</p><p><a href="{3}">Odkaz na propojení účtů.</a></p><p> Platnost tohoto odkazu je {5}. </p><p> Pokud nechcete propojit účet, tuto zprávu ignorujte. Pokud propojíte účty, budete se moci přihlásit jako {1} pomocí {0}.</p>
+passwordResetSubject=Zapomenuté heslo
+passwordResetBody=Někdo právě požádal o změnu hesla u vašeho účtu {2}. Pokud jste to vy, pro jeho změnu klikněte na odkaz níže.\n\n{0}\n\nPlatnost tohoto odkazu je {3}.\n\nPokud heslo změnit nechcete, tuto zprávu ignorujte a nic se nezmění.
+passwordResetBodyHtml=<p>Někdo právě požádal o změnu pověření vašeho účtu {2}. Pokud jste to vy, klikněte na odkaz níže, abyste je resetovali.</p><p><a href="{0}">Odkaz na obnovení pověření </a></p><p> Platnost tohoto odkazu vyprší během {3}.</p><p> Pokud nechcete obnovit vaše pověření, ignorujte tuto zprávu a nic se nezmění.</p>
+executeActionsSubject=Aktualizujte svůj účet
+executeActionsBody=Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.\n\n{0}\n\nPlatnost tohoto odkazu je {4}.\n\nPokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.
+executeActionsBodyHtml=<p>Váš administrátor vás požádal o provedení následujících akcí u účtu {2}: {3}. Začněte kliknutím na níže uvedený odkaz.</p><p><a href="{0}">Odkaz na aktualizaci účtu.</a></p><p>Platnost tohoto odkazu je {4}.</p><p>Pokud si nejste jisti, zda je tento požadavek v pořádku, ignorujte tuto zprávu.</p>
+eventLoginErrorSubject=Chyba přihlášení
+eventLoginErrorBody=Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
+eventLoginErrorBodyHtml=<p>Někdo se neúspěšně pokusil přihlásit k účtu {0} z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
+eventRemoveTotpSubject=Odebrat TOTP
+eventRemoveTotpBody=V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
+eventRemoveTotpBodyHtml=<p>V účtu {0} bylo odebráno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
+eventUpdatePasswordSubject=Aktualizace hesla
+eventUpdatePasswordBody=V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
+eventUpdatePasswordBodyHtml=<p>V účtu {0} bylo změněno heslo z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
+eventUpdateTotpSubject=Aktualizace OTP
+eventUpdateTotpBody=V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.
+eventUpdateTotpBodyHtml=<p>V účtu {0} bylo změněno nastavení OTP z {1}. Pokud jste to nebyli vy, kontaktujte administrátora.</p>
+
+requiredAction.CONFIGURE_TOTP=Konfigurace OTP
+requiredAction.TERMS_AND_CONDITIONS=Smluvní podmínky
+requiredAction.UPDATE_PASSWORD=Aktualizace hesla
+requiredAction.UPDATE_PROFILE=Aktualizace profilu
+requiredAction.VERIFY_EMAIL=Ověření e-mailu
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generování kódů pro obnovu
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#sekund|1#sekunda|2#sekundy|4<sekund}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minut|1#minuta|2#minuty|4<minut}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#hodin|1#hodina|2#hodiny|4<hodin}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dní|1#den|2#dny|4<dní}
+
+emailVerificationBodyCode=Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Ověřte prosím svou e-mailovou adresu zadáním následujícího kódu.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_da.properties b/themes/custom-theme-template/email/messages/messages_da.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9c769d03ddff0a056f201aabf5047e9b996e5173
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_da.properties
@@ -0,0 +1,42 @@
+emailVerificationSubject=Verificer email
+emailVerificationBody=Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse \n\n{0}\n\nDette link vil udløbe inden for {3}.\n\nHvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.
+emailVerificationBodyHtml=<p>Nogen har oprettet en {2} konto med denne email adresse. Hvis dette var dig, bedes du trykke på forbindet herunder for at verificere din email adresse</p><p><a href="{0}">Link til email verificering</a></p><p>Dette link vil udløbe inden for {3}.</p><p>Hvis det var dig der har oprettet denne konto, bedes du se bort fra denne mail.</p>
+emailTestSubject=[KEYCLOAK] - SMTP test besked
+emailTestBody=Dette er en test besked
+emailTestBodyHtml=<p>Dette er en test besked</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Nogen vil forbinde din "{1}" konto med "{0}" kontoen som er tilknyttet brugeren {2}. Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti\n\n{3}\n\nDette link vil udløbe efter {5}.\n\nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
+identityProviderLinkBodyHtml=<p>Nogen vil forbinde din <b>{1}</b> konto med <b>{0}</b> kontoen som er tilknyttet brugeren {2}. Hvis dette var dig, bedes du klikke på forbindet herunder for at forbinde de to konti</p><p><a href="{3}">Bekræft</a></p><p>Dette link vil udløbe efter {5}.</p><p>nHvis du ikke vil forbinde disse konti, kan du bare ignore denne besked. Hvis du vælger at forbinde de to konti, kan du logge ind som {1} via {0}.
+passwordResetSubject=Gendan adgangskode
+passwordResetBody=Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.\n\n{0}\n\nDette link og kode vil udløbe efter {3}.\n\nHvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.
+passwordResetBodyHtml=<p>Nogen har forsøgt at nulstille adgangskoden til {2}. Hvis dette var dig, bedes du klikke på linket herunder for at nulstille adgangskoden.</p><p><a href="{0}">Nulstil adgangskode</a></p><p>Dette link og kode vil udløbe efter {3}.</p><p>Hvis du ikke ønsker at nulstille din adgangskode, kan du se bort fra denne besked.</p>
+executeActionsSubject=Opdater din konto
+executeActionsBody=Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.\n\n{0}\n\nDette link udløber efter {4}.\n\nHvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.
+executeActionsBodyHtml=<p>Din administrator beder dig opdatere din {2} konto ved at udføre følgende handling(er): {3}. Klik på linket herunder for at starte processen.</p><p><a href="{0}">Opdater konto</a></p><p>Dette link udløber efter {4}.</p><p>Hvis du ikke mener at din administrator har efterspurgt dette, kan du blot se bort fra denne besked.</p>
+eventLoginErrorSubject=Logind fejl
+eventLoginErrorBody=Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
+eventLoginErrorBodyHtml=<p>Et fejlet logind forsøg er blevet registreret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
+eventRemoveTotpSubject=Fjern OTP
+eventRemoveTotpBody=OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
+eventRemoveTotpBodyHtml=<p>OTP er blevet fjernet fra din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
+eventUpdatePasswordSubject=Opdater adgangskode
+eventUpdatePasswordBody=Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
+eventUpdatePasswordBodyHtml=<p>Din adgangskode er blevet opdateret d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
+eventUpdateTotpSubject=Opdater OTP
+eventUpdateTotpBody=OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.
+eventUpdateTotpBodyHtml=<p>OTP blev opdateret på din konto d. {0} fra {1}. Hvis dette ikke var dig, bedes du kontakte din administrator omgående.</p>
+
+requiredAction.CONFIGURE_TOTP=Konfigurer OTP
+requiredAction.TERMS_AND_CONDITIONS=Vilkår og Betingelser
+requiredAction.UPDATE_PASSWORD=Opdater Adgangskode
+requiredAction.UPDATE_PROFILE=Opdater Profil
+requiredAction.VERIFY_EMAIL=Verificer Email
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#sekunder|1#sekund|1<sekunder}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minutter|1#minut|1<minutter}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#timer|1#time|1<timer}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dage|1#dag|1<dage}
+
+emailVerificationBodyCode=Verificer din email adresse ved at indtaste følgende kode.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Verificer din email adresse ved at indtaste følgende kode.</p><p><b>{0}</b></p>
diff --git a/themes/custom-theme-template/email/messages/messages_de.properties b/themes/custom-theme-template/email/messages/messages_de.properties
new file mode 100755
index 0000000000000000000000000000000000000000..462e17171d8f88995254dd489f0d51b7ecf7e22c
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_de.properties
@@ -0,0 +1,42 @@
+emailVerificationSubject=E-Mail verifizieren
+emailVerificationBody=Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, dann klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.\n\n{0}\n\nDer Link ist {3} gültig.\n\nFalls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.
+emailVerificationBodyHtml=<p>Jemand hat ein {2} Konto mit dieser E-Mail-Adresse erstellt. Falls Sie das waren, klicken Sie auf den Link, um die E-Mail-Adresse zu verifizieren.</p><p><a href="{0}">Link zur Bestätigung der E-Mail-Adresse</a></p><p>Der Link ist {3} gültig.</p><p>Falls Sie dieses Konto nicht erstellt haben, dann können sie diese Nachricht ignorieren.</p>
+emailUpdateConfirmationSubject=Neue E-Mail verifizieren
+emailUpdateConfirmationBody=Um Ihren {2} Account mit der E-Mail-Adresse {1} zu verifizieren, klicken Sie den folgenden Link\n\n{0}\n\nDer Link ist {3} gültig.\n\nSollten Sie die neue E-Mail-Adresse nicht verwenden wollen, ignorieren Sie diese Nachricht.
+emailUpdateConfirmationBodyHtml=<p>Um Ihren {2} Account mit der E-Mail-Adresse {1} zu verifizieren, klicken Sie den folgenden Link</p><p><a href="{0}">{0}</a></p><p>Der Link ist {3} gültig.</p><p>Sollten Sie die neue E-Mail-Adresse nicht verwenden wollen, ignorieren Sie diese Nachricht.</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Es wurde beantragt Ihren Account "{1}" mit dem Account "{0}" von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{3}\n\nDer Link ist {5} gültig.\n\nSollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.
+identityProviderLinkBodyHtml=<p>Es wurde beantragt Ihren Account <b>{1}</b> mit dem Account <b>{0}</b> von Benutzer {2} zu verlinken. Sollten Sie dies beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{3}">Link zur Bestätigung der Kontoverknüpfung</a></p><p>Der Link ist {5} gültig.</p><p>Sollten Sie Ihren Account nicht verlinken wollen, ignorieren Sie diese Nachricht. Wenn Sie die Accounts verlinken wird ein Login auf {1} über {0} ermöglicht.</p>
+passwordResetSubject=Passwort zurücksetzen
+passwordResetBody=Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.\n\n{0}\n\nDer Link ist {3} gültig.\n\nSollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.
+passwordResetBodyHtml=<p>Es wurde eine Änderung der Anmeldeinformationen für Ihren Account {2} angefordert. Wenn Sie diese Änderung beantragt haben, klicken Sie auf den unten stehenden Link.</p><p><a href="{0}">Link zum Zurücksetzen von Anmeldeinformationen</a></p><p>Der Link ist {3} gültig.</p><p>Sollten Sie keine Änderung vollziehen wollen können Sie diese Nachricht ignorieren und an Ihrem Account wird nichts geändert.</p>
+executeActionsSubject=Aktualisieren Sie Ihr Konto
+executeActionsBody=Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.\n\n{0}\n\nDer Link ist {4} gültig.\n\nSollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.
+executeActionsBodyHtml=<p>Ihr Administrator hat Sie aufgefordert Ihren Account {2} zu aktualisieren. Klicken Sie auf den unten stehenden Link um den Prozess zu starten.</p><p><a href="{0}">Link zum Account-Update</a></p><p>Der Link ist {4} gültig.</p><p>Sollten Sie sich dieser Aufforderung nicht bewusst sein, ignorieren Sie diese Nachricht und Ihr Account bleibt unverändert.</p>
+eventLoginErrorSubject=Fehlgeschlagene Anmeldung
+eventLoginErrorBody=Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
+eventLoginErrorBodyHtml=<p>Jemand hat um {0} von {1} versucht, sich mit Ihrem Konto anzumelden. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
+eventRemoveTotpSubject=OTP Entfernt
+eventRemoveTotpBody=OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
+eventRemoveTotpBodyHtml=<p>OTP wurde von Ihrem Konto am {0} von {1} entfernt. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
+eventUpdatePasswordSubject=Passwort Aktualisiert
+eventUpdatePasswordBody=Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
+eventUpdatePasswordBodyHtml=<p>Ihr Passwort wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
+eventUpdateTotpSubject=OTP Aktualisiert
+eventUpdateTotpBody=OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.
+eventUpdateTotpBodyHtml=<p>OTP wurde am {0} von {1} geändert. Falls das nicht Sie waren, dann kontaktieren Sie bitte Ihren Admin.</p>
+
+requiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren
+requiredAction.TERMS_AND_CONDITIONS=Bedingungen und Konditionen
+requiredAction.UPDATE_PASSWORD=Passwort aktualisieren
+requiredAction.UPDATE_PROFILE=Profil aktualisieren
+requiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#Sekunden|1#Sekunde|1<Sekunden}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#Minuten|1#Minute|1<Minuten}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#Stunden|1#Stunde|1<Stunden}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#Tage|1#Tag|1<Tage}
+
+emailVerificationBodyCode=Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Bitte verifizieren Sie Ihre E-Mail-Adresse, indem Sie den folgenden Code eingeben.</p><p><b>{0}</b></p>
diff --git a/themes/custom-theme-template/email/messages/messages_el.properties b/themes/custom-theme-template/email/messages/messages_el.properties
new file mode 100644
index 0000000000000000000000000000000000000000..bd85df9caa7a0de5131433fe0a4538d84007ad19
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_el.properties
@@ -0,0 +1,45 @@
+requiredAction.terms_and_conditions=Όροι και Συνθήκες
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Δημιουργία Κωδικών Ανάκτησης
+requiredAction.VERIFY_EMAIL=Επιβεβαίωση Email
+requiredAction.UPDATE_PROFILE=Ενημέρωση Προφίλ
+requiredAction.UPDATE_PASSWORD=Ενημέρωση Κωδικού Πρόσβασης
+requiredAction.CONFIGURE_TOTP=Ρύθμιση OTP
+executeActionsBodyHtml=<p>Ο διαχειριστής σας ζητάει να ενημερώστε το λογαριασμός σας στο {2} με το να κάνετε την/τις ακόλουθες ενέργεια/ες:{3}. Πατήστε το σύνδεσμο παρακάτω για να ξεκινήσετε τη διαδικασία.</p><p><a href="{0}">Σύνδεσμος για ενημέρωση λογαριασμού</a></p><p>Αυτός ο σύνδεσμος θα λήξει σε {4}.</p><p>Αν δεν έχετε ενημερωθεί ότι ο διαχειριστής ζήτησε αυτήν την ενημέρωση, τότε απλώς αγνοήστε αυτό το μήνυμα και δεν θα αλλάξει τίποτα.</p>
+executeActionsBody=Ο διαχειριστής σας ζητάει να ενημερώστε το λογαριασμός σας στο {2} με το να κάνετε την/τις ακόλουθες ενέργεια/ες:{3}. Πατήστε το σύνδεσμο παρακάτω για να ξεκινήσετε τη διαδικασία.\n\n{0}\n\nΑυτός ο σύνδεσμος θα λήξει σε {4}.\n\nΑν δεν έχετε ενημερωθεί ότι ο διαχειριστής ζήτησε αυτήν την ενημέρωση, τότε απλώς αγνοήστε αυτό το μήνυμα και δεν θα αλλάξει τίποτα.
+passwordResetBodyHtml=<p>Κάποιος ζήτησε να αλλάξει τα διαπιστευτήρια του λογαριασμού σας στο {2}. Αν είσαστε εσείς, πατήστε το σύνδεσμο παρακάτω για να τα αλλάξετε.</p><p><a href="{0}">Σύνδεσμος για να αλλάξετε τα διαπιστευτήρια</a></p><p>Αυτός ο σύνδεσμος και κωδικός θα λήξει σε {3}.</p><p>Αν δεν θέλετε να αλλάξετε τα διαπιστευτήρια σας, τότε αγνοήστε αυτό το μήνυμα και δε θα αλλάξει τίποτα.</p>
+passwordResetBody=Κάποιος ζήτησε να αλλάξει τα διαπιστευτήρια του λογαριασμού σας στο {2}. Αν είσαστε εσείς, πατήστε το σύνδεσμο παρακάτω για να τα αλλάξετε.\n\n{0}\n\nΑυτός ο σύνδεσμος και κωδικός θα λήξει σε {3}.\n\nΑν δεν θέλετε να αλλάξετε τα διαπιστευτήρια σας, τότε αγνοήστε αυτό το μήνυμα και δε θα αλλάξει τίποτα.
+identityProviderLinkBodyHtml=<p>Κάποιος θέλει να συνδέσει το λογαριασμό σας στο <b>{1}</b> με ένα λογαριασμό του χρήστη {2} στο <b>{0}</b>. Αν είσαστε εσείς, πατήστε το σύνδεσμο παρακάτω για να συνδεθούν οι λογαριασμοί </p><p><a href="{3}">Σύνδεσμος για σύνδεση λογαριασμών</a></p><p>Αυτός ο σύνδεσμος θα λήξει σε {5}.</p><p>Αν δεν θέλετε να συνδέσετε το λογαριασμό, τότε αγνοήστε αυτό το μήνυμα. Αν συνδεθούν οι λογαριασμοί τότε θα μπορεί να γίνει είσοδος στο {1} μέσω του {0}.</p>
+identityProviderLinkBody=Κάποιος θέλει να συνδέσει το λογαριασμό σας στο "{1}" με ένα λογαριασμό του χρήστη {2} στο "{0}". Αν είσαστε εσείς, πατήστε το σύνδεσμο παρακάτω για να συνδεθούν οι λογαριασμοί\n\n{3}\n\nΑυτός ο σύνδεσμος θα λήξει σε {5}.\n\nΑν δεν θέλετε να συνδέσετε το λογαριασμό, τότε αγνοήστε αυτό το μήνυμα. Αν συνδεθούν οι λογαριασμοί τότε θα μπορεί να γίνει είσοδος στο {1} μέσω του {0}.
+emailUpdateConfirmationBodyHtml=<p>Για να ενημερώσετε το λογαριασμό σας {2} με διεύθυνση email {1}, πατήστε το σύνδεσμο παρακάτω </p><p><a href="{0}">{0}</a></p><p>Ο σύνδεσμος θα λήξει σε {3}.</p><p>Αν δεν θέλετε να προχωρήσετε με αυτή την αλλαγή, τότε αγνοήστε αυτό το μήνυμα.</p>
+emailUpdateConfirmationBody=Για να ενημερώσετε το λογαριασμό σας {2} με διεύθυνση email {1}, πατήστε το σύνδεσμο παρακάτω\n\n{0}\n\nΟ σύνδεσμος θα λήξει σε {3}.\n\nΑν δεν θέλετε να προχωρήσετε με αυτή την αλλαγή, τότε αγνοήστε αυτό το μήνυμα.
+emailVerificationBodyCode=Παρακαλώ επιβεβαιώστε τη διεύθυνση email σας, εισάγοντας το παρακάτω κωδικό.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Παρακαλώ επιβεβαιώστε τη διεύθυνση email σας, εισάγοντας το παρακάτω κωδικό.</p><p><b>{0}</b></p>
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#δευτερόλεπτα|1#δευτερόλεπτο|1<δευτερόλεπτα}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#λεπτά|1#λεπτό|1<λεπτά}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#ώρες|1#ώρα|1<ώρες}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#μέρες|1#μέρα|1<μέρες}
+
+eventUpdateTotpBodyHtml=<p>Η πρόσβαση μέσω OTP ενημερώθηκε στο λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.</p>
+eventUpdateTotpBody=Η πρόσβαση μέσω OTP ενημερώθηκε στο λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.
+eventUpdateTotpSubject=Ενημέρωση OTP
+eventUpdatePasswordBodyHtml=<p>Ο κωδικός πρόσβασής σας άλλαξε στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.</p>
+eventUpdatePasswordBody=Ο κωδικός πρόσβασής σας άλλαξε στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.
+eventUpdatePasswordSubject=Ενημέρωση Κωδικού Πρόσβασης
+eventRemoveTotpBodyHtml=<p>Η πρόσβαση μέσω OTP αφαιρέθηκε από το λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.</p>
+eventRemoveTotpBody=Η πρόσβαση μέσω OTP αφαιρέθηκε από το λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.
+eventRemoveTotpSubject=Αφαίρεση OTP
+eventLoginErrorBodyHtml=<p>Ανιχνεύθηκε μία αποτυχημένη προσπάθεια εισόδου στο λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.</p>
+eventLoginErrorBody=Ανιχνεύθηκε μία αποτυχημένη προσπάθεια εισόδου στο λογαριασμό σας στις {0} από το {1}. Αν δεν είσαστε εσείς, τότε παρακαλώ επικοινωνήστε με ένα διαχειριστή.
+eventLoginErrorSubject=Σφάλμα Εισόδου
+executeActionsSubject=Ενημέρωση Του Λογαριασμού Σας
+passwordResetSubject=Αλλαγή κωδικού πρόσβασης
+identityProviderLinkSubject=Σύνδεση {0}
+emailTestBodyHtml=<p>Αυτό είναι ένα δοκιμαστικό μήνυμα</p>
+emailTestBody=Αυτό είναι ένα δοκιμαστικό μήνυμα
+emailTestSubject=[KEYCLOAK] - Δοκιμαστικό μήνυμα SMTP
+emailUpdateConfirmationSubject=Επιβεβαίωση Nέου email
+emailVerificationBodyHtml=<p>Κάποιος δημιούργησε ένα λογαριασμό {2} με αυτή τη διεύθυνση email. Αν είσαστε εσείς, τότε πατήστε το σύνδεσμο παρακάτω για να επιβεβαιώσετε το email σας</p><p><a href="{0}">Σύνδεσμος για επιβεβαίωση διεύθυνσης email</a></p><p>Αυτός ο σύνδεσμος θα λήξει σε {3}.</p><p>Αν δεν δημιουργήσατε το λογαριασμό τότε απλώς αγνοήστε αυτό το μήνυμα.</p>
+emailVerificationBody=Κάποιος δημιούργησε ένα {2} λογαριασμό με αυτή τη διεύθυνση email. Αν είσασταν εσείς, τότε πατήστε το παρακάτω σύνδεσμο για να επιβεβαιώσετε τη διεύθυνση email σας\n\n{0}\n\nΑυτός ο σύνδεσμος θα λήξει μέσα σε {3}.\n\nΑν δεν δημιουργήσατε εσείς αυτό το λογαριασμό, τότε απλώς αγνοήστε αυτό το μήνυμα.
+emailVerificationSubject=Επιβεβαίωση email
diff --git a/themes/custom-theme-template/email/messages/messages_en.properties b/themes/custom-theme-template/email/messages/messages_en.properties
new file mode 100755
index 0000000000000000000000000000000000000000..bd7a1935d7a60735a62015b08d69ee0915d9e930
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_en.properties
@@ -0,0 +1,50 @@
+emailVerificationSubject=Verify email
+emailVerificationBody=Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address\n\n{0}\n\nThis link will expire within {3}.\n\nIf you didn''t create this account, just ignore this message.
+emailVerificationBodyHtml=<p>Someone has created a {2} account with this email address. If this was you, click the link below to verify your email address</p><p><a href="{0}">Link to e-mail address verification</a></p><p>This link will expire within {3}.</p><p>If you didn''t create this account, just ignore this message.</p>
+emailUpdateConfirmationSubject=Verify new email
+emailUpdateConfirmationBody=To update your {2} account with email address {1}, click the link below\n\n{0}\n\nThis link will expire within {3}.\n\nIf you don''t want to proceed with this modification, just ignore this message.
+emailUpdateConfirmationBodyHtml=<p>To update your {2} account with email address {1}, click the link below</p><p><a href="{0}">{0}</a></p><p>This link will expire within {3}.</p><p>If you don''t want to proceed with this modification, just ignore this message.</p>
+emailTestSubject=[KEYCLOAK] - SMTP test message
+emailTestBody=This is a test message
+emailTestBodyHtml=<p>This is a test message</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Someone wants to link your "{1}" account with "{0}" account of user {2} . If this was you, click the link below to link accounts\n\n{3}\n\nThis link will expire within {5}.\n\nIf you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.
+identityProviderLinkBodyHtml=<p>Someone wants to link your <b>{1}</b> account with <b>{0}</b> account of user {2}. If this was you, click the link below to link accounts</p><p><a href="{3}">Link to confirm account linking</a></p><p>This link will expire within {5}.</p><p>If you don''t want to link account, just ignore this message. If you link accounts, you will be able to login to {1} through {0}.</p>
+passwordResetSubject=Reset password
+passwordResetBody=Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.\n\n{0}\n\nThis link and code will expire within {3}.\n\nIf you don''t want to reset your credentials, just ignore this message and nothing will be changed.
+passwordResetBodyHtml=<p>Someone just requested to change your {2} account''s credentials. If this was you, click on the link below to reset them.</p><p><a href="{0}">Link to reset credentials</a></p><p>This link will expire within {3}.</p><p>If you don''t want to reset your credentials, just ignore this message and nothing will be changed.</p>
+executeActionsSubject=Update Your Account
+executeActionsBody=Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.\n\n{0}\n\nThis link will expire within {4}.\n\nIf you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.
+executeActionsBodyHtml=<p>Your administrator has just requested that you update your {2} account by performing the following action(s): {3}. Click on the link below to start this process.</p><p><a href="{0}">Link to account update</a></p><p>This link will expire within {4}.</p><p>If you are unaware that your administrator has requested this, just ignore this message and nothing will be changed.</p>
+eventLoginErrorSubject=Login error
+eventLoginErrorBody=A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.
+eventLoginErrorBodyHtml=<p>A failed login attempt was detected to your account on {0} from {1}. If this was not you, please contact an administrator.</p>
+eventRemoveTotpSubject=Remove OTP
+eventRemoveTotpBody=OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.
+eventRemoveTotpBodyHtml=<p>OTP was removed from your account on {0} from {1}. If this was not you, please contact an administrator.</p>
+eventUpdatePasswordSubject=Update password
+eventUpdatePasswordBody=Your password was changed on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdatePasswordBodyHtml=<p>Your password was changed on {0} from {1}. If this was not you, please contact an administrator.</p>
+eventUpdateTotpSubject=Update OTP
+eventUpdateTotpBody=OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.
+eventUpdateTotpBodyHtml=<p>OTP was updated for your account on {0} from {1}. If this was not you, please contact an administrator.</p>
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#seconds|1#second|1<seconds}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minutes|1#minute|1<minutes}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#hours|1#hour|1<hours}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#days|1#day|1<days}
+
+emailVerificationBodyCode=Please verify your email address by entering in the following code.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Please verify your email address by entering in the following code.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_es.properties b/themes/custom-theme-template/email/messages/messages_es.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f41b033a6470c70c286183efef784707b83db4ad
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_es.properties
@@ -0,0 +1,51 @@
+emailVerificationSubject=Verificación de email
+emailVerificationBody=Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi tú no has creado esta cuenta, simplemente ignora este mensaje.
+emailVerificationBodyHtml=<p>Alguien ha creado una cuenta de {2} con esta dirección de email. Si has sido tú, haz click en el enlace siguiente para verificar tu dirección de email.</p><p><a href=\"{0}\">Enlace de verficación de dirección de email</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si tú no has creado esta cuenta, simplemente ignora este mensaje.</p>
+passwordResetSubject=Reiniciar contraseña
+passwordResetBody=Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.
+passwordResetBodyHtml=<p>Alguien ha solicitado cambiar las credenciales de tu cuenta de {2}. Si has sido tú, haz clic en el enlace siguiente para reiniciarlas.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no quieres reiniciar tus credenciales, simplemente ignora este mensaje y no se realizará ningún cambio.</p>
+executeActionsSubject=Actualiza tu cuenta
+executeActionsBody=El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.\n\n{0}\n\nEste enlace expirará en {1} minutos.\n\nSi no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.
+executeActionsBodyHtml=<p>El administrador ha solicitado que actualices tu cuenta de {2}. Haz clic en el enlace inferior para iniciar este proceso.</p><p><a href=\"{0}\">{0}</a></p><p>Este enlace expirará en {1} minutos.</p><p>Si no estás al tanto de que el administrador haya solicitado esto, simplemente ignora este mensaje y no se realizará ningún cambio.</p>
+eventLoginErrorSubject=Fallo en el inicio de sesión
+eventLoginErrorBody=Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.
+eventLoginErrorBodyHtml=<p>Se ha detectado un intento de acceso fallido a tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>
+eventRemoveTotpSubject=Borrado OTP
+eventRemoveTotpBody=OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.
+eventRemoveTotpBodyHtml=<p>OTP fue eliminado de tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>
+eventUpdatePasswordSubject=Actualización de contraseña
+eventUpdatePasswordBody=Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.
+eventUpdatePasswordBodyHtml=<p>Tu contraseña se ha actualizado el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>
+eventUpdateTotpSubject=Actualización de OTP
+eventUpdateTotpBody=OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.
+eventUpdateTotpBodyHtml=<p>OTP se ha actualizado en tu cuenta el {0} desde {1}. Si no has sido tú, por favor contacta con el administrador.</p>
+
+emailUpdateConfirmationSubject=Verificar un nuevo correo electrónico
+emailUpdateConfirmationBody=Para actualizar su cuenta {2} con la dirección de correo electrónico {1}, haga clic en el enlace a continuación \n\n{0}\n\n\nEl enlace expirará dentro de {3}. \n\nSi no desea continuar con esta modificación, simplemente ignore este mensaje.
+emailUpdateConfirmationBodyHtml=<p>Para actualizar su cuenta {2} con la dirección de correo electrónico {1}, haga clic en el enlace a continuación</p><p><a href="{0}">{0}</a></p><p>Este enlace expirará dentro de {3}.</p><p>Si no desea continuar con esta modificación, simplemente ignore este mensaje.</p>
+emailTestSubject=[KeyCloak] - Mensaje de prueba SMTP
+emailTestBody=Este es un mensaje de prueba
+emailTestBodyHtml=<p> Este es un mensaje de prueba </p>
+identityProviderLinkSubject=Enlace {0}
+identityProviderLinkBody=Alguien quiere vincular su cuenta "{1}" con la cuenta "{0}" del usuario {2}. Si ha sido usted, haga clic en el siguiente enlace para vincular las cuentas \n\n{3}\n\nEste enlace expirará en {5}.\n\nSi no desea vincular la cuenta, simplemente ignore este mensaje. Si vincula las cuentas, podrá iniciar sesión en {1} a través de {0}.
+identityProviderLinkBodyHtml=<p>Alguien quiere vincular su <b>{1}</b> cuenta con <b>{0}</b> cuenta del usuario {2}. Si ha sido usted, haga clic en el siguiente enlace para vincular las cuentas</p><p><a href="{3h}">Enlace para confirmar el vínculo de cuentas</a></p><p>Este enlace expirará en {5}.</p><p>Si no desea vincular la cuenta, simplemente ignore este mensaje. Si vincula las cuentas, podrá iniciar sesión en {1} a través de {0}.</p>
+
+requiredAction.CONFIGURE_TOTP=Configurar OTP
+requiredAction.TERMS_AND_CONDITIONS=Términos y condiciones
+requiredAction.UPDATE_PASSWORD=Actualiza la contraseña
+requiredAction.UPDATE_PROFILE=Actualización del perfil
+requiredAction.VERIFY_EMAIL=Verificar correo electrónico
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generar códigos de recuperación
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#segundos|1#segundo|1<segundos}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minutos|1#minuto|1<minutos}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#horas|1#hora|1<horas}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#días|1#día|1<días}
+
+emailVerificationBodyCode=Verifique su dirección de correo electrónico ingresando en el siguiente código. \n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p> Verifique su dirección de correo electrónico ingresando el siguiente código. </p> <p> <b> {0} </b> </p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_fa.properties b/themes/custom-theme-template/email/messages/messages_fa.properties
new file mode 100644
index 0000000000000000000000000000000000000000..c8a7ec3a7b1ee002c41b077d77514a66fab7c727
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_fa.properties
@@ -0,0 +1,56 @@
+emailVerificationSubject=تایید ایمیل
+emailVerificationBody=شخصی با این آدرس ایمیل یک حساب {2} ایجاد کرده است. اگر این شما بودید، روی پیوند زیر کلیک کنید تا آدرس ایمیل خود را تأیید کنید\n\n{0}\n\nاین پیوند در {3} منقضی می‌شود.\n\nاگر شما این حساب را ایجاد نکرده‌اید، فقط این پیام را نادیده بگیرید .
+emailVerificationBodyHtml=<p>شخصی با این آدرس ایمیل یک حساب {2} ایجاد کرده است. اگر این شما بودید، برای تأیید آدرس ایمیل خود روی پیوند زیر کلیک کنید</p><p><a href="{0}">پیوند به تأیید آدرس ایمیل</a></p><p>این پیوند در {3} منقضی می‌شود.</p><p>اگر شما این حساب را ایجاد نکرده‌اید، فقط این پیام را نادیده بگیرید.</p>
+emailUpdateConfirmationSubject=تایید ایمیل جدید
+emailUpdateConfirmationBody=برای به‌روزرسانی حساب {2} خود با آدرس ایمیل {1}، روی پیوند زیر کلیک کنید\n\n{0}\n\nاین پیوند ظرف {3} منقضی می‌شود.\n\nاگر نمی‌خواهید ادامه دهید این تغییر، فقط این پیام را نادیده بگیرید.
+emailUpdateConfirmationBodyHtml=<p>برای به‌روزرسانی حساب {2} خود با آدرس ایمیل {1}، روی پیوند زیر کلیک کنید</p><p><a href="{0}">{0}</a></p>< p>این پیوند در مدت {3} منقضی می‌شود.</p><p>اگر نمی‌خواهید به این اصلاح ادامه دهید، فقط این پیام را نادیده بگیرید.</p>
+emailTestSubject=[KEYCLOAK] - پیام آزمایشی SMTP
+emailTestBody=این یک پیام آزمایشی است
+emailTestBodyHtml=<p>این یک پیام آزمایشی است</p>
+identityProviderLinkSubject=پیوند {0}
+identityProviderLinkBody=شخصی می خواهد حساب "{1}" شما را با حساب "{0}" کاربر {2} پیوند دهد. اگر این شما بودید، برای پیوند دادن حساب‌ها روی پیوند زیر کلیک کنید\n\n{3}\n\nاین پیوند در {5} منقضی می‌شود.\n\nاگر نمی‌خواهید حساب را پیوند دهید، فقط این پیام را نادیده بگیرید. اگر حساب‌ها را پیوند دهید، می‌توانید از طریق {0} به {1} وارد شوید.
+identityProviderLinkBodyHtml=<p>شخصی می خواهد حساب <b>{1}</b> شما را به حساب <b>{0}</b> کاربر {2} پیوند دهد. اگر این شما بودید، برای پیوند دادن حساب‌ها روی پیوند زیر کلیک کنید</p><p><a href="{3}">پیوند برای تأیید پیوند حساب</a></p><p>این پیوند در مدت زمان منقضی می‌شود. {5}.</p><p>اگر نمی‌خواهید حساب را پیوند دهید، فقط این پیام را نادیده بگیرید. اگر حساب‌ها را پیوند دهید، می‌توانید از طریق {0} به {1} وارد شوید.</p>
+passwordResetSubject=بازنشانی رمز عبور
+passwordResetBody=شخصی به تازگی درخواست کرده است که اعتبارنامه حساب {2} شما را تغییر دهد. اگر این شما بودید، روی پیوند زیر کلیک کنید تا آنها را بازنشانی کنید.\n\n{0}\n\nاین پیوند و کد در مدت {3} منقضی می‌شوند.\n\nاگر نمی‌خواهید اطلاعات کاربری خود را بازنشانی کنید، فقط این پیام را نادیده بگیرید و چیزی تغییر نخواهد کرد.
+passwordResetBodyHtml=<p>شخصی به تازگی درخواست تغییر اعتبار حساب {2} شما را داده است. اگر این شما بودید، روی پیوند زیر کلیک کنید تا آنها را بازنشانی کنید.</p><p><a href="{0}">پیوند به بازنشانی اعتبارنامه</a></p><p>این پیوند منقضی می‌شود. در {3}.</p><p>اگر نمی‌خواهید اعتبارنامه خود را بازنشانی کنید، فقط این پیام را نادیده بگیرید و چیزی تغییر نخواهد کرد.</p>
+executeActionsSubject=اکانت خود را به روز کنید
+executeActionsBody=سرپرست شما به تازگی درخواست کرده است که حساب {2} خود را با انجام اقدامات زیر به روز کنید: {3}. برای شروع این فرآیند روی پیوند زیر کلیک کنید.\n\n{0}\n\nاین پیوند در مدت {4} منقضی می‌شود.\n\nاگر نمی‌دانید که سرپرست شما این درخواست را کرده است، فقط این پیام را نادیده بگیرید و هیچ چیز انجام نخواهد شد. تغییر یافته.
+executeActionsBodyHtml=<p>سرپرست شما به تازگی درخواست کرده است که حساب {2} خود را با انجام اقدامات زیر به روز کنید: {3}. برای شروع این فرآیند روی پیوند زیر کلیک کنید.</p><p><a href="{0}">پیوند به به‌روزرسانی حساب</a></p><p>این پیوند در {4} منقضی می‌شود. .</p><p>اگر نمی دانید که سرپرست شما این درخواست را کرده است، فقط این پیام را نادیده بگیرید و چیزی تغییر نخواهد کرد.</p>
+eventLoginErrorSubject=خطای ورود
+eventLoginErrorBody=یک تلاش ناموفق برای ورود به حساب شما در {0} از {1} شناسایی شد. اگر این شما نبودید، لطفا با یک مدیر تماس بگیرید.
+eventLoginErrorBodyHtml=<p>یک تلاش ناموفق برای ورود به حساب شما در {0} از {1} شناسایی شد. اگر این شما نبودید، لطفاً با یک سرپرست تماس بگیرید.</p>
+eventRemoveTotpSubject=OTP را حذف کنید
+eventRemoveTotpBody=OTP در تاریخ {0} از {1} از حساب شما حذف شد. اگر این شما نبودید، لطفا با یک مدیر تماس بگیرید.
+eventRemoveTotpBodyHtml=<p>OTP از حساب شما در {0} از {1} حذف شد. اگر این شما نبودید، لطفاً با یک سرپرست تماس بگیرید.</p>
+eventUpdatePasswordSubject=رمز عبور را به روز کنید
+eventUpdatePasswordBody=رمز عبور شما در {0} از {1} تغییر کرد. اگر این شما نبودید، لطفا با یک مدیر تماس بگیرید.
+eventUpdatePasswordBodyHtml=<p>گذرواژه شما در {0} از {1} تغییر کرد. اگر این شما نبودید، لطفاً با یک سرپرست تماس بگیرید.</p>
+eventUpdateTotpSubject=OTP را به روز کنید
+eventUpdateTotpBody=OTP برای حساب شما در {0} از {1} به روز شد. اگر این شما نبودید، لطفا با یک مدیر تماس بگیرید.
+eventUpdateTotpBodyHtml=<p>OTP برای حساب شما در {0} از {1} به روز شد. اگر این شما نبودید، لطفاً با یک سرپرست تماس بگیرید.</p>
+
+requiredAction.CONFIGURE_TOTP=OTP را پیکربندی کنید
+requiredAction.TERMS_AND_CONDITIONS=شرایط و ضوابط
+requiredAction.UPDATE_PASSWORD=رمز عبور را بروزرسانی کنید
+requiredAction.UPDATE_PROFILE=پروفایل را بروزرسانی کنید
+requiredAction.VERIFY_EMAIL=تأیید ایمیل
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=کدهای بازیابی را ایجاد کنید
+
+linkExpirationFormatter.timePeriodUnit.seconds=ثانیه
+linkExpirationFormatter.timePeriodUnit.seconds.1=ثانیه
+linkExpirationFormatter.timePeriodUnit.minutes=دقیقه
+linkExpirationFormatter.timePeriodUnit.minutes.1=دقیقه
+
+linkExpirationFormatter.timePeriodUnit.hours=ساعت
+linkExpirationFormatter.timePeriodUnit.hours.1=ساعت
+linkExpirationFormatter.timePeriodUnit.days=روز
+linkExpirationFormatter.timePeriodUnit.days.1=روز
+
+emailVerificationBodyCode=لطفاً آدرس ایمیل خود را با وارد کردن کد زیر تأیید کنید.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>لطفاً آدرس ایمیل خود را با وارد کردن کد زیر تأیید کنید.</p><p><b>{0}</b></p>
+
+
+linkExpirationFormatter.timePeriodUnit.seconds=ثانیه
+linkExpirationFormatter.timePeriodUnit.minutes=دقیقه
+linkExpirationFormatter.timePeriodUnit.hours=ساعت
+linkExpirationFormatter.timePeriodUnit.days=روز
diff --git a/themes/custom-theme-template/email/messages/messages_fi.properties b/themes/custom-theme-template/email/messages/messages_fi.properties
new file mode 100644
index 0000000000000000000000000000000000000000..3d395eb5393730badf431a3f9b69c991c92eec4c
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_fi.properties
@@ -0,0 +1,41 @@
+emailVerificationSubject=Vahvista sähköposti
+emailVerificationBody=Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi\n\n{0}\n\nLinkin vanhenemisaika: {3}.\n\nJos et luonut tätä tiliä, jätä viesti huomiotta.
+emailVerificationBodyHtml=<p>Tällä sähköpostiosoitteella on luotu {2}-tili. Jos loit tilin itse, klikkaa alla olevaa linkkiä vahvistaaksesi sähköpostiosoitteesi</p><p><a href="{0}">Linkki vahvistamiseen</a></p><p>Linkin vanhenemisaika: {3}.</p><p>Jos et luonut tätä tiliä, jätä viesti huomiotta.</p>
+emailTestSubject=[KEYCLOAK] - SMTP testiviesti
+emailTestBody=Tämä on testiviesti
+emailTestBodyHtml=<p>Tämä on testiviesti</p>
+identityProviderLinkSubject=Linkki {0}
+identityProviderLinkBody=Saimme pyynnön linkittää "{1}"-tilin "{0}"-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi\n\n{3}\n\nLinkin vanhenemisaika: {5}.\n\nJos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.
+identityProviderLinkBodyHtml=<p>Saimme pyynnön linkittää  <b>{1}</b>-tilin <b>{0}</b>-tiliin käyttäjälle {2}. Jos teit tämän pyynnön, klikkaa alla olevaa linkkiä tilien linkittämiseksi</p><p><a href="{3}">Vahvista tilien linkitys</a></p><p>Linkin vanhenemisaika: {5}.</p><p>Jos et halua linkittää tilejä, jätä tämä viesti huomiotta. Jos linkität tilit, voit jatkossa kirjautua tilille {1}, tilin {0} kautta.</p>
+passwordResetSubject=Salasanan nollaus
+passwordResetBody=Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:\n\n{0}\n\nLinkin vanhenemisaika: {3} .\n\nJos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.
+passwordResetBodyHtml=<p>Saimme pyynnön vaihtaa {2}-tilisi salasanan. Jos pyysit itse salasanan vaihtoa, pääset tästä linkistä vaihtamaan salasanasi:</p><p><a href="{0}">Linkki salasanan vaihtoon</a></p><p>Linkin vanhenemisaika: <strong>{3}</strong>.</p><p>Jos et halua vaihtaa salasanaasi tai et ole pyytänyt salasanan vaihtoa itse, jätä tämän viesti huomiotta.</p>
+executeActionsSubject=Päivitä tilisi
+executeActionsBody=Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.\n\n{0}\n\nLinkin vanhenemisaika: {4}.\n\nJos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.
+executeActionsBodyHtml=<p>Järjestelmänvalvoja on pyytänyt sinua päivittämään {2}-tilisi tekemällä seuraavat toimenpiteet: {3}. Aloita prosessi klikkaamalla alla olevaa linkkiä.</p><p><a href="{0}">Linkki tilin päivittämiseen</a></p><p>Linkin vanhenemisaika: {4}.</p><p>Jos et ole tietoinen tästä järjestelmänvalvojan pyynnöstä, jätä tämän viesti huomiotta.</p>
+eventLoginErrorSubject=Kirjautuminen epäonnistui
+eventLoginErrorBody=Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.
+eventLoginErrorBodyHtml=<p>Tilillänne on havaittu epäonnistunut kirjautumisyritys {0} osoitteesta {1}. Jos et itse yrittänyt kirjautua tilillesi, ota yhteyttä järjestelmänvalvojaan.</p>
+eventRemoveTotpSubject=Poista OTP
+eventRemoveTotpBody=OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
+eventRemoveTotpBodyHtml=<p>OTP on poistettu tililtäsi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
+eventUpdatePasswordSubject=Päivitä salasana
+eventUpdatePasswordBody=Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan..
+eventUpdatePasswordBodyHtml=<p>Tilisi salasana on vaihdettu {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
+eventUpdateTotpSubject=Päivitä OTP
+eventUpdateTotpBody=OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.
+eventUpdateTotpBodyHtml=<p>OTP on päivitetty tilillesi {0} osoitteesta {1}. Jos et itse tehnyt tätä, ota yhteyttä järjestelmänvalvojaan.</p>
+requiredAction.CONFIGURE_TOTP=Konfiguroi OTP
+requiredAction.TERMS_AND_CONDITIONS=Käyttöehdot
+requiredAction.UPDATE_PASSWORD=Päivitä salasana
+requiredAction.UPDATE_PROFILE=Päivitä profiili
+requiredAction.VERIFY_EMAIL=Vahvista sähköposti
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#sekuntia|1#sekunti|1<sekuntia}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minuuttia|1#minuutti|1<minuuttia}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#tuntia|1#tunti|1<tuntia}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#päivää|1#päivä|1<päivää}
+
+emailVerificationBodyCode=Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Ole hyvä ja vahvista sähköpostiosoitteesi alla olevalla koodilla.</p><p><b>{0}</b></p>
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/messages/messages_fr.properties b/themes/custom-theme-template/email/messages/messages_fr.properties
new file mode 100644
index 0000000000000000000000000000000000000000..155c94827a338bea4f99b3da0196cb6d8fd9b396
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_fr.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=Vérification du courriel
+emailVerificationBody=Quelqu''un vient de créer un compte "{2}" avec votre courriel. Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
+emailVerificationBodyHtml=<p>Quelqu''un vient de créer un compte "{2}" avec votre courriel. Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous afin de vérifier votre adresse de courriel</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
+emailUpdateConfirmationSubject=Vérification du nouveau courriel
+emailUpdateConfirmationBody=Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message.
+emailUpdateConfirmationBodyHtml=<p>Afin d''utiliser le courriel {1} dans votre compte {2}, cliquez sur le lien ci-dessous</p><p><a href="{0}">{0}</a></p><p>Ce lien expirera dans {3}.</p><p>Sinon, veuillez ignorer ce message.</p>
+identityProviderLinkSubject=Lien {0}
+identityProviderLinkBody=Quelqu''un souhaite lier votre compte "{1}" au compte "{0}" de l''utilisateur {2} . Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous pour lier les comptes\n\n{3}\n\nCe lien expire dans {5}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte. Si vous liez les comptes, vous pourrez vous connecter à {1} via {0}.
+identityProviderLinkBodyHtml=<p>Quelqu''un souhaite lier votre compte <b>{1}</b> au compte <b>{0}</b> de l''utilisateur {2}. Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous pour lier les comptes</p><p><a href="{3}">Lien pour confirmer la liaison des comptes</a></p><p>Ce lien expire dans {5}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte. Si vous liez les comptes, vous pourrez vous connecter à {1} via {0}.</p>
+passwordResetSubject=Réinitialiser le mot de passe
+passwordResetBody=Quelqu''un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.\n\n{0}\n\nCe lien expire dans {3}.\n\nSinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.
+passwordResetBodyHtml=<p>Quelqu''un vient de demander une réinitialisation de mot de passe pour votre compte {2}. Si vous êtes à l''origine de cette requête, veuillez cliquer sur le lien ci-dessous pour le mettre à jour.</p><p><a href="{0}">Lien pour réinitialiser votre mot de passe</a></p><p>Ce lien expire dans {3}.</p><p>Sinon, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>
+executeActionsSubject=Mettre à jour votre compte
+executeActionsBody=Votre administrateur vient de demander une mise à jour de votre compte {2} pour réaliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.\n\n{0}\n\nCe lien expire dans {4}.\n\nSi vous n''êtes pas à l''origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.
+executeActionsBodyHtml=<p>Votre administrateur vient de demander une mise à jour de votre compte {2} pour réaliser les actions suivantes : {3}. Veuillez cliquer sur le lien ci-dessous afin de commencer le processus.</p><p><a href="{0}">{0}</a></p><p>Ce lien expire dans {4}.</p><p>Si vous n''êtes pas à l''origine de cette requête, veuillez ignorer ce message ; aucun changement ne sera effectué sur votre compte.</p>
+eventLoginErrorSubject=Erreur de connexion
+eventLoginErrorBody=Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n''êtes pas à l''origine de cette requête, veuillez contacter votre administrateur.
+eventLoginErrorBodyHtml=<p>Une tentative de connexion a été détectée sur votre compte {0} depuis {1}. Si vous n''êtes pas à l''origine de cette requête, veuillez contacter votre administrateur.</p>
+eventRemoveTotpSubject=Suppression du OTP
+eventRemoveTotpBody=Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.
+eventRemoveTotpBodyHtml=<p>Le OTP a été supprimé de votre compte {0} depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.</p>
+eventUpdatePasswordSubject=Mise à jour du mot de passe
+eventUpdatePasswordBody=Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.
+eventUpdatePasswordBodyHtml=<p>Votre mot de passe pour votre compte {0} a été modifié depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.</p>
+eventUpdateTotpSubject=Mise à jour du OTP
+eventUpdateTotpBody=Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.
+eventUpdateTotpBodyHtml=<p>Le OTP a été mis à jour pour votre compte {0} depuis {1}. Si vous n''étiez pas à l''origine de cette requête, veuillez contacter votre administrateur.</p>
+
+requiredAction.CONFIGURE_TOTP=Configurer un OTP
+requiredAction.TERMS_AND_CONDITIONS=Conditions générale d''utilisation
+requiredAction.UPDATE_PASSWORD=Mise à jour du mot de passe
+requiredAction.UPDATE_PROFILE=Mise à jour du profile
+requiredAction.VERIFY_EMAIL=Vérification de l''adresse courriel
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#secondes|1#seconde|1<secondes}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minutes|1#minute|1<minutes}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#heures|1#heure|1<heures}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#jours|1#jour|1<jours}
+
+emailVerificationBodyCode=Veuillez vérifier votre adresse de courriel en saisissant le code suivant.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Veuillez vérifier votre adresse de courriel en saisissant le code suivant.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_hu.properties b/themes/custom-theme-template/email/messages/messages_hu.properties
new file mode 100644
index 0000000000000000000000000000000000000000..00bc29a1b566553c37c0eb70f2afd790f92a0440
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_hu.properties
@@ -0,0 +1,50 @@
+emailVerificationSubject=E-mail cím megerősítése
+emailVerificationBody=Ezzel az e-mail címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem, kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az e-mail címet.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön hozta létre a felhasználói fiókot, akkor kérem, hagyja figyelmen kívül ezt az üzenetet.
+emailVerificationBodyHtml=<p>Ezzel az e-mail címmel valaki létrehozott egy {2} tartomány felhasználói fiókot. Amennyiben a fiókot Ön hozta létre, kérem, kattintson a lenti hivatkozásra, hogy megerősítse fiókját és ezt az e-mail címet.</p><p><a href="{0}">Hivatkozás a fiók és az e-mail cím megerősítéséhez</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön hozta létre a felhasználói fiókot, akkor kérem, hagyja figyelmen kívül ezt az üzenetet.</p>
+emailUpdateConfirmationSubject=Új e-mail cím megerősítése
+emailUpdateConfirmationBody=Valaki módosítani szeretné az Ön "{2}" tartományi fiókjának e-mail címét. Amennyiben az e-mail cím módosítását Ön kezdeményezte, kérem, kattintson a lenti hivatkozásra a jóváhagyáshoz\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön kérte az e-mail cím megváltoztatását, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, az e-mail címe nem fog megváltozni.
+***emailUpdateConfirmationBodyHtml=<p>Valaki módosítani szeretné az Ön <b>{2}</b> tartományi fiókjának e-mail címét. Amennyiben az e-mail cím módosítását Ön kezdeményezte, kérem, kattintson a lenti hivatkozásra a jóváhagyáshoz</p><p><a href="{0}">{0}</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön kérte az e-mail cím megváltoztatását, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, az e-mail címe nem fog megváltozni.</p>
+emailTestSubject=[KEYCLOAK] - SMTP teszt üzenet
+emailTestBody=Ez egy KEYCLOAK teszt üzenet.
+emailTestBodyHtml=<p>Ez egy KEYCLOAK teszt üzenet.</p>
+identityProviderLinkSubject={0} összekötés
+identityProviderLinkBody=Valaki össze kívánja kötni az Ön "{1}" tartományi fiókját a(z) "{0}" személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem, kattintson a lenti hivatkozásra, hogy összekösse fiókjait.\n\n{3}\n\nA hivatkozás érvényét veszti {5} múlva.\n\nHa nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem, hagyja figyelmen kívül ezt az üzenetet.\n\nHa összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.
+identityProviderLinkBodyHtml=<p>Valaki össze kívánja kötni az Ön <b>{1}</b> tartomány fiókját a(z) <b>{0}</b> személyazonosság-kezelő {2} felhasználói fiókjával. Amennyiben az összekötést Ön kezdeményezte kérem, kattintson a lenti hivatkozásra, hogy összekösse fiókjait.</p><p><a href="{3}">Hivatkozás a fiók összekötés megerősítéshez</a></p><p>A hivatkozás érvényét veszti {5} múlva.</p><p>Ha nem ön kezdeményezte a felhasználói fiókok összekötését, akkor kérem, hagyja figyelmen kívül ezt az üzenetet.</p><p>Ha összeköti a fiókjait, akkor beléphet a(z) {1} tartományba a(z) {0} szolgáltatón keresztül.</p>
+passwordResetSubject=Jelszó visszaállítás
+passwordResetBody=Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem, kattintson a lenti hivatkozásra a jelszava megváltoztatásához.\n\n{0}\n\nA hivatkozás érvényét veszti {3} múlva.\n\nHa nem ön kérte a jelszó visszaállítást, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.
+passwordResetBodyHtml=<p>Valaki vissza kívánja állítani az Ön "{2}" tartományi fiókjának jelszavát. Amennyiben a jelszó visszaállítást Ön kezdeményezte, kérem, kattintson a lenti hivatkozásra a jelszava megváltoztatásához.</p><p><a href="{0}">Hivatkozás a jelszó visszaállításhoz</a></p><p>A hivatkozás érvényét veszti {3} múlva.</p><p>Ha nem ön kérte a jelszó visszaállítást, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, a jelszava nem fog megváltozni.</p>
+executeActionsSubject=Felhasználói fiók adatok módosítása
+executeActionsBody=Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem, kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.\n\n{0}\n\nA hivatkozás érvényét veszti {4} múlva.\n\nHa nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.
+executeActionsBodyHtml=<p>Az alkalmazás adminisztrátora kezdeményezte az Ön "{2}" tartományi felhasználói fiók adatainak módosítását a következő műveletekkel: {3}. Kérem, kattintson a lenti hivatkozásra, hogy megkezdhesse a kért módosításokat.</p><p><a href="{0}">Hivatkozás a felhasználói fiók adatok módosításához</a></p><p>A hivatkozás érvényét veszti {4} múlva.</p><p>Ha nincs tudomása arról, hogy az adminisztrátora módosításokat kért Öntől, akkor kérem, hagyja figyelmen kívül ezt az üzenetet, az adatai nem fognak megváltozni.</p>
+eventLoginErrorSubject=Belépési hiba
+eventLoginErrorBody=Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem, lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön próbált meg belépni.
+eventLoginErrorBodyHtml=<p>Sikertelen belépési kísérlet történt {0} időpontban a(z) {1} címről. Kérem, lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön próbált meg belépni.</p>
+eventRemoveTotpSubject=Egyszer használatos jelszó (OTP) eltávolítása
+eventRemoveTotpBody=Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte az OTP eltávolítását.
+eventRemoveTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) funkciót {0} időpontban a(z) {1} címről érkező kérés értelmében eltávolítottuk a fiókjáról. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte az OTP eltávolítását.</p>
+eventUpdatePasswordSubject=Jelszó csere
+eventUpdatePasswordBody=Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte a jelszó cserét.
+eventUpdatePasswordBodyHtml=<p>Jelszavát {0} időpontban a(z) {1} címről érkező kérés értelmében lecseréltük. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte a jelszó cserét.</p>
+eventUpdateTotpSubject=Egyszer használatos jelszó (OTP) csere
+eventUpdateTotpBody=Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte az OTP beállítások módosítását.
+eventUpdateTotpBodyHtml=<p>Az egyszer használatos jelszó (OTP) beállításait {0} időpontban a(z) {1} címről érkező kérés értelmében módosítottuk a fiókján. Kérem, haladéktalanul lépjen kapcsolatba az alkalmazás adminisztrátorával amennyiben nem ön igényelte az OTP beállítások módosítását.</p>
+
+requiredAction.CONFIGURE_TOTP=Egyszer használatos jelszó (OTP) beállítása
+requiredAction.TERMS_AND_CONDITIONS=Felhasználási feltételek
+requiredAction.UPDATE_PASSWORD=Jelszó csere
+requiredAction.UPDATE_PROFILE=Fiók adatok módosítása
+requiredAction.VERIFY_EMAIL=E-mail cím megerősítése
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Biztonsági kódok generálása
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds=másodperc
+linkExpirationFormatter.timePeriodUnit.minutes=perc
+linkExpirationFormatter.timePeriodUnit.hours=óra
+linkExpirationFormatter.timePeriodUnit.days=nap
+
+emailVerificationBodyCode=Kérem, erősítse meg az e-mail címét a következő kód megadásával.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Kérem, erősítse meg az e-mail címét a következő kód megadásával.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_it.properties b/themes/custom-theme-template/email/messages/messages_it.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f39ca84e1f5e413e60c3931bd29fc8797d24912f
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_it.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=Verifica l''email
+emailVerificationBody=Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email\n\n{0}\n\nQuesto link scadrà in {3}.\n\nSe non sei stato tu a creare questo account, ignora questo messaggio.
+emailVerificationBodyHtml=<p>Qualcuno ha creato un account {2} con questo indirizzo email. Se sei stato tu, fai clic sul link seguente per verificare il tuo indirizzo email</p><p><a href="{0}">Link per verificare l''indirizzo email</a></p><p>Questo link scadrà in {3}.</p><p>Se non sei stato tu a creare questo account, ignora questo messaggio.</p>
+emailTestSubject=[KEYCLOAK] - messaggio di test SMTP
+emailTestBody=Questo è un messaggio di test
+emailTestBodyHtml=<p>Questo è un messaggio di test</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Qualcuno vuole associare il tuo account "{1}" con l''account "{0}" dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account\n\n{3}\n\nQuesto link scadrà in {5}.\n\nSe non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.
+identityProviderLinkBodyHtml=<p>Qualcuno vuole associare il tuo account <b>{1}</b> con l''account <b>{0}</b> dell''utente {2}. Se sei stato tu, fai clic sul link seguente per associare gli account</p><p><a href="{3}">{3}</a></p><p>Questo link scadrà in {5}.</p><p>Se non vuoi associare l''account, ignora questo messaggio. Se associ gli account, potrai accedere a {1} attraverso {0}.</p>
+passwordResetSubject=Reimposta la password
+passwordResetBody=Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.\n\n{0}\n\nQuesto link e codice scadranno in {3}.\n\nSe non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.
+passwordResetBodyHtml=<p>Qualcuno ha appena richiesto di cambiare le credenziali di accesso al tuo account {2}. Se sei stato tu, fai clic sul link seguente per reimpostarle.</p><p><a href="{0}">{0}</a></p><p>Questo link scadrà in {3}.</p><p>Se non vuoi reimpostare le tue credenziali di accesso, ignora questo messaggio e non verrà effettuato nessun cambio.</p>
+executeActionsSubject=Aggiorna il tuo account
+executeActionsBody=Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.\n\n{0}\n\nQuesto link scadrà in {4}.\n\nSe non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.
+executeActionsBodyHtml=<p>Il tuo amministratore ha appena richiesto un aggiornamento del tuo account {2} ed è necessario che tu esegua la/le seguente/i azione/i: {3}. Fai clic sul link seguente per iniziare questo processo.</p><p><a href="{0}">Link to account update</a></p><p>Questo link scadrà in {4}.</p><p>Se non sei a conoscenza della richiesta del tuo amministratore, ignora questo messaggio e non verrà effettuato nessun cambio.</p>
+eventLoginErrorSubject=Errore di accesso
+eventLoginErrorBody=È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
+eventLoginErrorBodyHtml=<p>È stato rilevato un tentativo fallito di accesso al tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
+eventRemoveTotpSubject=Rimozione OTP (password temporanea valida una volta sola)
+eventRemoveTotpBody=La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
+eventRemoveTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) è stata rimossa dal tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
+eventUpdatePasswordSubject=Aggiornamento password
+eventUpdatePasswordBody=La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
+eventUpdatePasswordBodyHtml=<p>La tua password è stata cambiata il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
+eventUpdateTotpSubject=Aggiornamento OTP (password temporanea valida una volta sola)
+eventUpdateTotpBody=La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.
+eventUpdateTotpBodyHtml=<p>La OTP (password temporanea valida una volta sola) è stata aggiornata per il tuo account il {0} da {1}. Se non sei stato tu, per favore contatta l''amministratore.</p>
+
+requiredAction.CONFIGURE_TOTP=Configurazione OTP
+requiredAction.TERMS_AND_CONDITIONS=Termini e condizioni
+requiredAction.UPDATE_PASSWORD=Aggiornamento password
+requiredAction.UPDATE_PROFILE=Aggiornamento profilo
+requiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#secondi|1#secondo|1<secondi}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minuti|1#minuto|1<minuti}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#ore|1#ora|1<ore}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#giorni|1#giorno|1<giorni}
+
+emailVerificationBodyCode=Per favore verifica il tuo indirizzo email inserendo il codice seguente.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Per favore verifica il tuo indirizzo email inserendo il codice seguente.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_ja.properties b/themes/custom-theme-template/email/messages/messages_ja.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2e2ac1b963d07468c959e3978b393ae10c7682a9
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_ja.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=Eメールの確認
+emailVerificationBody=このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。
+emailVerificationBodyHtml=<p>このメールアドレスで{2}アカウントが作成されました。以下のリンクをクリックしてメールアドレスの確認を完了してください。</p><p><a href="{0}">メールアドレスの確認</a></p><p>このリンクは{3}だけ有効です。</p><p>もしこのアカウントの作成に心当たりがない場合は、このメールを無視してください。</p>
+emailTestSubject=[KEYCLOAK] - SMTPテストメッセージ
+emailTestBody=これはテストメッセージです
+emailTestBodyHtml=<p>これはテストメッセージです</p>
+identityProviderLinkSubject=リンク {0}
+identityProviderLinkBody=あなたの"{1}"アカウントと{2}ユーザーの"{0}"アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。\n\n{3}\n\nこのリンクは{5}だけ有効です。\n\nもしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。
+identityProviderLinkBodyHtml=<p>あなたの<b>{1}</b>アカウントと{2}ユーザーの<b>{0}</b>アカウントのリンクが要求されました。以下のリンクをクリックしてアカウントのリンクを行ってください。</p><p><a href="{3}">アカウントリンクの確認</a></p><p>このリンクは{5}だけ有効です。</p><p>もしアカウントのリンクを行わない場合は、このメッセージを無視してください。アカウントのリンクを行うことで、{0}経由で{1}にログインすることができるようになります。</p>
+passwordResetSubject=パスワードのリセット
+passwordResetBody=あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。\n\n{0}\n\nこのリンクは{3}だけ有効です。\n\nもしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。
+passwordResetBodyHtml=<p>あなたの{2}アカウントのパスワードの変更が要求されています。以下のリンクをクリックしてパスワードのリセットを行ってください。</p><p><a href="{0}">パスワードのリセット</a></p><p>このリンクは{3}だけ有効です。</p><p>もしパスワードのリセットを行わない場合は、このメッセージを無視してください。何も変更されません。</p>
+executeActionsSubject=アカウントの更新
+executeActionsBody=次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。\n\n{0}\n\nこのリンクは{4}だけ有効です。\n\n管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。
+executeActionsBodyHtml=<p>次のアクションを実行することにより、管理者よりあなたの{2}アカウントの更新が要求されています: {3}。以下のリンクをクリックしてこのプロセスを開始してください。</p><p><a href="{0}">アカウントの更新</a></p><p>このリンクは{4}だけ有効です。</p><p>管理者からのこの変更要求についてご存知ない場合は、このメッセージを無視してください。何も変更されません。</p>
+eventLoginErrorSubject=ログインエラー
+eventLoginErrorBody={0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は、管理者に連絡してください。
+eventLoginErrorBodyHtml=<p>{0}に{1}からのログイン失敗があなたのアカウントで検出されました。心当たりがない場合は管理者に連絡してください。</p>
+eventRemoveTotpSubject=OTPの削除
+eventRemoveTotpBody={0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。
+eventRemoveTotpBodyHtml=<p>{0}に{1}からの操作でOTPが削除されました。心当たりがない場合は、管理者に連絡してください。</p>
+eventUpdatePasswordSubject=パスワードの更新
+eventUpdatePasswordBody={0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。
+eventUpdatePasswordBodyHtml=<p>{0}に{1}からの操作であなたのパスワードが変更されました。心当たりがない場合は、管理者に連絡してください。</p>
+eventUpdateTotpSubject=OTPの更新
+eventUpdateTotpBody={0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。
+eventUpdateTotpBodyHtml=<p>{0}に{1}からの操作でOTPが更新されました。心当たりがない場合は、管理者に連絡してください。</p>
+
+requiredAction.CONFIGURE_TOTP=OTPの設定
+requiredAction.TERMS_AND_CONDITIONS=利用規約
+requiredAction.UPDATE_PASSWORD=パスワードの更新
+requiredAction.UPDATE_PROFILE=プロファイルの更新
+requiredAction.VERIFY_EMAIL=Eメールの確認
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds=秒
+linkExpirationFormatter.timePeriodUnit.minutes=分
+linkExpirationFormatter.timePeriodUnit.hours=時間
+linkExpirationFormatter.timePeriodUnit.days=日
+
+emailVerificationBodyCode=次のコードを入力してメールアドレスを確認してください。\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>次のコードを入力してメールアドレスを確認してください。</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_lt.properties b/themes/custom-theme-template/email/messages/messages_lt.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4793dbe8eb2fd14753f302d9693e4efd959209af
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_lt.properties
@@ -0,0 +1,24 @@
+emailVerificationSubject=El. pašto patvirtinimas
+emailVerificationBody=Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką. 
+emailVerificationBodyHtml=<p>Paskyra {2} sukurta naudojant šį el. pašto adresą. Jei tao buvote Jūs, tuomet paspauskite žemiau esančią nuorodą</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>nJei paskyros nekūrėte, tuomet ignuoruokite šį laišką.</p>
+identityProviderLinkSubject=Sąsaja {0}
+identityProviderLinkBody=Kažas pageidauja susieti Jūsų "{1}" paskyrą su "{0}" {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras\n\n{3}\n\nŠi nuoroda galioja {4} min.\n\nJei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.
+identityProviderLinkBodyHtml=<p>žas pageidauja susieti Jūsų <b>{1}</b> paskyrą su <b>{0}</b> {2} naudotojo paskyrą. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą norėdami susieti paskyras</p><p><a href=LT"{3}">{3}</a></p><p>Ši nuoroda galioja {4} min.</p><p>Jei paskyrų susieti nenorite, tuomet ignoruokite šį laišką. Jei paskyras susiesite, tuomet prie {1} galėsiste prisijungti per {0}.</p>
+passwordResetSubject=Slaptažodžio atkūrimas
+passwordResetBody=Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.\n\n{0}\n\nŠi nuoroda ir kodas galioja {1} min.\n\nJei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
+passwordResetBodyHtml=<p>Kažkas pageidauja pakeisti Jūsų paskyros {2} slaptažodį. Jei tai buvote Jūs, tuomet paspauskite žemiau esančią nuorodą slaptažodžio pakeitimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda ir kodas galioja {1} min.</p><p>Jei nepageidajate keisti slaptažodžio, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
+executeActionsSubject=Atnaujinkite savo paskyrą
+executeActionsBody=Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.\n\n{0}\n\nŠi nuoroda galioja {1} min.\n\nJei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.
+executeActionsBodyHtml=<p>Sistemos administratorius pageidauja, kad Jūs atnaujintumėte savo {2} paskyrą. Paspauskite žemiau esančią nuorodą paskyros duomenų atnaujinimui.</p><p><a href=LT"{0}">{0}</a></p><p>Ši nuoroda galioja {1} min.</p><p>Jei Jūs neasate tikri, kad tai administratoriaus pageidavimas, tuomet ignoruokite šį laišką ir niekas nebus pakeista.</p>
+eventLoginErrorSubject=Nesėkmingas bandymas prisijungti prie jūsų paskyros
+eventLoginErrorBody=Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi
+eventLoginErrorBodyHtml=<p>Bandymas prisijungti prie jūsų paskyros {0} iš {1} nesėkmingas. Jei tai nebuvote jūs, tuomet susisiekite su administratoriumi</p>
+eventRemoveTotpSubject=OTP pašalinimas
+eventRemoveTotpBody=Kažkas pageidauja atsieti TOPT Jūsų {1} paskyroje su {0}. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
+eventRemoveTotpBodyHtml=<p>Kažkas pageidauja atsieti TOPT Jūsų <b>{1}</b> paskyroje su <b>{0}</b>. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>
+eventUpdatePasswordSubject=Slaptažodžio atnaujinimas
+eventUpdatePasswordBody={1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi
+eventUpdatePasswordBodyHtml=<p>{1} paskyroje {0} pakeisas jūsų slaptažodis. Jei Jūs nekeitėte, tuomet susisiekite su administratoriumi</p>
+eventUpdateTotpSubject=OTP atnaujinimas
+eventUpdateTotpBody=OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi
+eventUpdateTotpBodyHtml=<p>OTP Jūsų {1} paskyroje su {0} buvo atnaujintas. Jei tai nebuvote Jūs, tuomet susisiekite su administratoriumi</p>
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/messages/messages_nl.properties b/themes/custom-theme-template/email/messages/messages_nl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f665b60150f58baa07af6d77b9f220a42acadcb2
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_nl.properties
@@ -0,0 +1,34 @@
+emailVerificationSubject=Bevestig e-mailadres
+emailVerificationBody=Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen \n\n{0}\n\nDeze koppeling zal binnen {3} vervallen.\n\nU kunt dit bericht negeren indien u dit account niet heeft aangemaakt.
+emailVerificationBodyHtml=<p>Iemand heeft een {2} account aangemaakt met dit e-mailadres. Als u dit was, klikt u op de onderstaande koppeling om uw e-mailadres te bevestigen</p><p><a href="{0}">Koppeling naar e-mailadres bevestiging</a></p><p>Deze koppeling zal binnen {3} vervallen.</p<p>U kunt dit bericht negeren indien u dit account niet heeft aangemaakt.</p>
+emailTestSubject=[KEYCLOAK] - SMTP testbericht
+emailTestBody=Dit is een testbericht
+emailTestBodyHtml=<p>Dit is een testbericht</p>
+identityProviderLinkSubject=Koppel {0}
+identityProviderLinkBody=Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen\n\n{3}\n\nDeze link zal over {5} vervallen.\n\nAls u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.
+identityProviderLinkBodyHtml=<p>Iemand wil uw "{1}" account koppelen met "{0}" account van gebruiker {2}. Als u dit was, klik dan op de onderstaande link om de accounts te koppelen</p><p><a href="{3}">Link om accounts te koppelen</a></p><p>Deze link zal over {5} vervallen.</p><p>Als u de accounts niet wilt koppelen, negeer dan dit bericht. Als u accounts koppelt, dan kunt u bij {1} inloggen via {0}.</p>
+passwordResetSubject=Wijzig wachtwoord
+passwordResetBody=Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.\n\n{0}\n\nDe link en de code zullen binnen {3} vervallen.\n\nAls u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.
+passwordResetBodyHtml=<p>Iemand verzocht de aanmeldgegevens van uw {2} account te wijzigen. Als u dit was, klik dan op de onderstaande koppeling om ze te wijzigen.</p><p><a href="{0}">Wijzig aanmeldgegevens</a></p><p>De link en de code zullen binnen {3} vervallen.</p><p>Als u uw aanmeldgegevens niet wilt wijzigen, negeer dan dit bericht en er zal niets gewijzigd worden.</p>
+executeActionsSubject=Wijzig uw account
+executeActionsBody=Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten. \n\n{0}\n\nDeze link zal over {4} vervallen. \n\nAls u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.
+executeActionsBodyHtml=<p>Uw beheerder heeft u verzocht uw {2} account te wijzigen. Klik op de onderstaande koppeling om dit proces te starten.</p><p><a href="{0}">Link naar account wijziging</a></p><p>Deze link zal over {4} vervallen.</p><p>Als u niet over dit verzoek op de hoogte was, negeer dan dit bericht om uw account ongewijzigd te laten.</p>
+eventLoginErrorSubject=Inlogfout
+eventLoginErrorBody=Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.
+eventLoginErrorBodyHtml=<p>Er is een foutieve inlogpoging gedetecteerd op uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met de beheerder.</p>
+eventRemoveTotpSubject=OTP verwijderd
+eventRemoveTotpBody=OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.
+eventRemoveTotpBodyHtml=<p>OTP is verwijderd van uw account om {0} vanuit {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
+eventUpdatePasswordSubject=Wachtwoord gewijzigd
+eventUpdatePasswordBody=Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
+eventUpdatePasswordBodyHtml=<p>Uw wachtwoord is gewijzigd om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
+eventUpdateTotpSubject=OTP gewijzigd
+eventUpdateTotpBody=OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.
+eventUpdateTotpBodyHtml=<p>OTP is gewijzigd voor uw account om {0} door {1}. Als u dit niet was, neem dan contact op met uw beheerder.</p>
+
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#seconden|1#seconde|1<seconden}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minuten|1#minuut|1<minuten}
+linkExpirationFormatter.timePeriodUnit.hours=uur
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dagen|1#dag|1<dagen}
diff --git a/themes/custom-theme-template/email/messages/messages_no.properties b/themes/custom-theme-template/email/messages/messages_no.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8cfe3489a37482ef06d4d641f1f8f4a6e6f7c4ae
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_no.properties
@@ -0,0 +1,24 @@
+emailVerificationSubject=Bekreft e-postadresse
+emailVerificationBody=Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.
+emailVerificationBodyHtml=<p>Noen har opprettet en {2} konto med denne e-postadressen. Hvis dette var deg, klikk på lenken nedenfor for å bekrefte e-postadressen din</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke opprettet denne kontoen, vennligst ignorer denne meldingen.</p>
+identityProviderLinkSubject=Lenke {0}
+identityProviderLinkBody=Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene\n\n{3}\n\nDenne lenken vil utløpe om {4} minutter\n\nHvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.
+identityProviderLinkBodyHtml=<p>Noen vil koble din <b>{1}</b> konto med <b>{0}</b> konto til bruker {2}. Hvis dette var deg, klikk på lenken nedenfor for å koble kontoene.</p><p><a href="{3}">{3}</a></p><p>Denne lenken vil utløpe om {4} minutter.</p><p>Hvis du ikke vil koble kontoene, vennligst ignorer denne meldingen. Hvis du kobler kontoene sammen vil du kunne logge inn til {1} gjennom {0}.</p>
+passwordResetSubject=Tilbakestill passord
+passwordResetBody=Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.
+passwordResetBodyHtml=<p>Noen har bedt om å endre innloggingsdetaljene til din konto {2}. Hvis dette var deg, klikk på lenken nedenfor for å tilbakestille dem.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke vil tilbakestille din innloggingsdata, vennligst ignorer denne meldingen og ingenting vil bli endret.</p>
+executeActionsSubject=Oppdater kontoen din
+executeActionsBody=Administrator har anmodet at du oppdaterer din {2} konto. Klikk på lenken nedenfor for å starte denne prosessen\n\n{0}\n\nDenne lenken vil utløpe om {1} minutter.\n\nHvis du ikke var klar over at administrator har bedt om dette, vennligst ignorer denne meldingen og ingenting vil bli endret.
+executeActionsBodyHtml=<p>Administrator har anmodet at du oppdaterer din {2} konto. Klikk på linken nedenfor for å starte denne prosessen.</p><p><a href="{0}">{0}</a></p><p>Denne lenken vil utløpe om {1} minutter.</p><p>Hvis du ikke var klar over at administrator har bedt om dette, ignorer denne meldingen og ingenting vil bli endret. </p>
+eventLoginErrorSubject=Innlogging feilet
+eventLoginErrorBody=Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
+eventLoginErrorBodyHtml=<p>Et mislykket innloggingsforsøk ble oppdaget på din konto på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
+eventRemoveTotpSubject=Fjern engangskode
+eventRemoveTotpBody=Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
+eventRemoveTotpBodyHtml=<p>Engangskode ble fjernet fra kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.</p>
+eventUpdatePasswordSubject=Oppdater passord
+eventUpdatePasswordBody=Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
+eventUpdatePasswordBodyHtml=<p>Ditt passord ble endret i {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
+eventUpdateTotpSubject=Oppdater engangskode
+eventUpdateTotpBody=Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator.
+eventUpdateTotpBodyHtml=<p>Engangskode ble oppdatert for kontoen din på {0} fra {1}. Hvis dette ikke var deg, vennligst kontakt administrator. </p>
diff --git a/themes/custom-theme-template/email/messages/messages_pl.properties b/themes/custom-theme-template/email/messages/messages_pl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..46fcef930aa17635e163ee2714e55c2d75eced81
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_pl.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=Zweryfikuj email
+emailVerificationBody=Ktoś utworzył konto {2} z Twoim adresem e-mail. Jeśli to Ty, kliknij proszę poniższy odnośnik, aby potwierdzić założenie konta \n\n{0}\n\nOdnośnik wygaśnie w ciągu {3}.\n\nJeśli nie utworzyłaś/eś tego konta, po prostu zignoruj niniejszą wiadomość.
+emailVerificationBodyHtml=<p>Ktoś utworzył konto {2} z Twoim adresem e-mail. Jeśli to Ty, kliknij proszę <a href="{0}">odnośnik</a>, aby potwierdzić założenie konta</p><p>Odnośnik wygaśnie w ciągu {3}</p><p>Jeśli nie utworzyłaś/eś tego konta, po prostu zignoruj niniejszą wiadomość.</p>
+emailTestSubject=[KEYCLOAK] - wiadomość testowa SMTP
+emailTestBody=To jest wiadomość testowa
+emailTestBodyHtml=<p>To jest wiadomość testowa</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Ktoś chce połączyć Twoje konto "{1}" z kontem "{0}" użytkownika {2}. Jeśli to Ty, kliknij proszę poniższy odnośnik by połączyć konta\n\n{3}\n\nOdnośnik wygaśnie w ciągu {5}.\n\nJeśli nie chcesz połączyć konta to zignoruj niniejszą wiadomość. Jeśli połączysz konta, będziesz mogła/mógł się zalogować na {1} przez {0}.
+identityProviderLinkBodyHtml=<p>Ktoś chce połączyć Twoje konto <b>{1}</b> z kontem <b>{0}</b> użytkownika {2}. Jeśli to Ty, kliknij proszę <a href="{3}">odnośnik</a> by połączyć konta.</p><p>Odnośnik wygaśnie w ciągu {5}.</p><p>Jeśli nie chcesz połączyć konta to zignoruj niniejszą wiadomość. Jeśli połączysz konta, będziesz mogła/mógł się zalogować na {1} przez {0}.</p>
+passwordResetSubject=Zresetuj hasło
+passwordResetBody=Ktoś właśnie poprosił o zmianę hasła do Twojego konta {2}. Jeśli to Ty, kliknij poniższy odnośnik, aby je zresetować.\n\n{0}\n\nOdnośnik i kod stracą ważność w ciągu {3}.\n\nJeśli nie chcesz zresetować swoich danych logowania, po prostu zignoruj tę wiadomość i nic się nie zmieni.
+passwordResetBodyHtml=<p>Ktoś właśnie poprosił o zmianę hasła do Twojego konta {2}. Jeśli to Ty, kliknij poniższy odnośnik, aby je zresetować.</p><p><a href="{0}">Odnośnik do resetowania poświadczeń</a></p><p>Ten odnośnik wygaśnie w ciągu {3}.</p><p>Jeśli nie chcesz resetować swoich poświadczeń, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
+executeActionsSubject=Zaktualizuj swoje konto
+executeActionsBody=Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij poniższy odnośnik, aby rozpocząć proces.\n\n{0}\n\nOdnośnik wygaśnie w ciągu {4}.\n\nJeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.
+executeActionsBodyHtml=<p>Administrator właśnie zażądał aktualizacji konta {2} poprzez wykonanie następujących działań: {3}. Kliknij proszę <a href="{0}">odnośnik</a>, aby rozpocząć proces.</p><p>Odnośnik wygaśnie w ciągu {4}.</p><p>Jeśli nie masz pewności, że administrator tego zażądał, po prostu zignoruj tę wiadomość i nic się nie zmieni.</p>
+eventLoginErrorSubject=Błąd logowania
+eventLoginErrorBody=Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
+eventLoginErrorBodyHtml=<p>Nieudana próba logowania została wykryta na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
+eventRemoveTotpSubject=Usuń hasło jednorazowe (OTP)
+eventRemoveTotpBody=Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
+eventRemoveTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało usunięte z Twojego konta w {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
+eventUpdatePasswordSubject=Aktualizuj hasło
+eventUpdatePasswordBody=Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
+eventUpdatePasswordBodyHtml=<p>Twoje hasło zostało zmienione {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
+eventUpdateTotpSubject=Aktualizuj hasło jednorazowe (OTP)
+eventUpdateTotpBody=Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.
+eventUpdateTotpBodyHtml=<p>Hasło jednorazowe (OTP) zostało zaktualizowane na Twoim koncie {0} z {1}. Jeśli to nie Ty, skontaktuj się z administratorem.</p>
+
+requiredAction.CONFIGURE_TOTP=Konfiguracja hasła jednorazowego (OTP)
+requiredAction.TERMS_AND_CONDITIONS=Regulamin
+requiredAction.UPDATE_PASSWORD=Aktualizacja hasła
+requiredAction.UPDATE_PROFILE=Aktualizacja profilu
+requiredAction.VERIFY_EMAIL=Weryfikacja adresu e-mail
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#sekund|1#sekunda|2#sekundy|4<sekund}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minut|1#minuta|2#minuty|4<minut}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#godzin|1#godzina|2#godziny|4<godzin}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dni|1#dzień|1<dni}
+
+emailVerificationBodyCode=Potwierdź proszę swój adres e-mail wprowadzając następujący kod.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Potwierdź proszę swój adres e-mail, wprowadzając następujący kod.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_pt_BR.properties b/themes/custom-theme-template/email/messages/messages_pt_BR.properties
new file mode 100755
index 0000000000000000000000000000000000000000..3228617282c07712b8935e901a4ed48e36874f68
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_pt_BR.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=Verificação de endereço de e-mail
+emailVerificationBody=Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email.\n\n{0}\n\nEste link irá expirar dentro de {3}.\n\nSe não foi você quem criou esta conta, basta ignorar esta mensagem.
+emailVerificationBodyHtml=<p>Alguém criou uma conta {2} com este endereço de e-mail. Se foi você, clique no link abaixo para verificar o seu endereço de email.</p><p><a href="{0}">Link para verificação de endereço de e-mail</a></p><p>Este link irá expirar dentro de {3}.</p><p>Se não foi você quem criou esta conta, basta ignorar esta mensagem.</p>
+emailTestSubject=[KEYCLOAK] - Mensagem de teste SMTP
+emailTestBody=Esta é uma mensagem de teste
+emailTestBodyHtml=<p>Esta é uma mensagem de teste</p>
+identityProviderLinkSubject=Vincular {0}
+identityProviderLinkBody=Alguém quer vincular a sua conta "{1}" com a conta "{0}" do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.\n\n{3}\n\nEste link irá expirar em {5}.\n\nSe você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} fazendo login em {0}.
+identityProviderLinkBodyHtml=<p>Alguém quer vincular a sua conta <b>{1}</b> com a conta <b>{0}</b> do usuário {2} . Se foi você, clique no link abaixo para vincular as contas.</p><p><a href="{3}">Link para confirmar vinculação de contas</a></p><p>Este link irá expirar em {5}.</p><p>Se você não quer vincular a conta, apenas ignore esta mensagem. Se você vincular as contas, você será capaz de logar em {1} fazendo login em {0}.</p>
+passwordResetSubject=Redefinição de senha
+passwordResetBody=Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.\n\n{0}\n\nEste link e código expiram em {3}.\n\nSe você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.
+passwordResetBodyHtml=<p>Alguém solicitou uma alteração de senha da sua conta {2}. Se foi você, clique no link abaixo para redefini-la.</p><p><a href="{0}">Link para redefinir a senha</a></p><p>Este link irá expirar em {3}.</p><p>Se você não deseja redefinir sua senha, apenas ignore esta mensagem e nada será alterado.</p>
+executeActionsSubject=Atualização de conta
+executeActionsBody=Um administrador solicitou que você atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.\n\n{0}\n\nEste link irá expirar em {4}.\n\nSe você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.
+executeActionsBodyHtml=<p>Um administrador solicitou que você atualize sua conta {2} com a(s) seguinte(s) etapa(s): {3}. Clique no link abaixo para iniciar o processo.</p><p><a href="{0}">Link para atualizar a conta</a></p><p>Este link irá expirar em {4}.</p><p>Se você não tem conhecimento de que o administrador solicitou isso, basta ignorar esta mensagem e nada será alterado.</p>
+eventLoginErrorSubject=Erro de login
+eventLoginErrorBody=Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.
+eventLoginErrorBodyHtml=<p>Uma tentativa de login malsucedida da sua conta foi detectada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>
+eventRemoveTotpSubject=Remover autenticação de dois fatores
+eventRemoveTotpBody=A autenticação de dois fatores foi removida da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.
+eventRemoveTotpBodyHtml=<p>A autenticação de dois fatores foi removida da sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>
+eventUpdatePasswordSubject=Atualização de senha
+eventUpdatePasswordBody=Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.
+eventUpdatePasswordBodyHtml=<p>Sua senha foi alterada em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>
+eventUpdateTotpSubject=Atualização de autenticação de dois fatores
+eventUpdateTotpBody=A autenticação de dois fatores foi atualizada para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.
+eventUpdateTotpBodyHtml=<p>A autenticação de dois fatores foi atualizada para a sua conta em {0} de {1}. Se não foi você, por favor, entre em contato com um administrador.</p>
+
+requiredAction.CONFIGURE_TOTP=Configurar Autenticação de Dois Fatores
+requiredAction.TERMS_AND_CONDITIONS=Termos e Condições
+requiredAction.UPDATE_PASSWORD=Atualizar Senha
+requiredAction.UPDATE_PROFILE=Atualizar Perfil
+requiredAction.VERIFY_EMAIL=Verificar Endereço de E-mail
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#segundos|1#segundo|1<segundos}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minutos|1#minuto|1<minutos}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#horas|1#hora|1<horas}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dias|1#dia|1<dias}
+
+emailVerificationBodyCode=Verifique o seu endereço de e-mail inserindo o seguinte código.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Verifique o seu endereço de e-mail inserindo o seguinte código.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_ru.properties b/themes/custom-theme-template/email/messages/messages_ru.properties
new file mode 100644
index 0000000000000000000000000000000000000000..b976cdd4fec6e3c3c5655a9d6ddf22c80a053fd2
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_ru.properties
@@ -0,0 +1,24 @@
+emailVerificationSubject=Подтверждение E-mail
+emailVerificationBody=Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите на следующую ссылку для подтверждения вашего email\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не создавали учетную запись, просто проигнорируйте это письмо.
+emailVerificationBodyHtml=<p>Кто-то создал учетную запись {2} с этим E-mail. Если это были Вы, нажмите по ссылке для подтверждения вашего E-mail</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через {1} минут.</p><p>Если Вы не создавали учетную запись, просто проигнорируйте это письмо.</p>
+identityProviderLinkSubject=Ссылка {0}
+identityProviderLinkBody=Кто-то хочет связать вашу учетную запись "{1}" с "{0}" учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи\n\n{3}\n\nЭта ссылка устареет через {4} минут.\n\nЕсли это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в  {1} через {0}.
+identityProviderLinkBodyHtml=<p>Кто-то хочет связать вашу учетную запись <b>{1}</b> с <b>{0}</b> учетной записью пользователя {2} . Если это были Вы, нажмите по следующей ссылке, чтобы связать учетные записи</p><p><a href="{3}">{3}</a></p><p>Эта ссылка устареет через  {4} минут.</p><p>Если это не хотите объединять учетные записи, просто проигнориуйте это письмо. После объединения учетных записей Вы можете войти в  {1} через {0}.</p>
+passwordResetSubject=Сброс пароля
+passwordResetBody=Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо.
+passwordResetBodyHtml=<p>Кто-то только что запросил изменение пароля от Вашей учетной записи {2}. Если это были Вы, нажмите на следующую ссылку, чтобы сбросить его.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через  {1} минут.</p><p>Если Вы не хотите сбрасывать пароль, просто проигнорируйте это письмо и ничего не изменится.</p>
+executeActionsSubject=Обновление Вашей учетной записи
+executeActionsBody=Администратор просит Вас обновить данные Вашей учетной записи {2}. Нажмите по следующей ссылке чтобы начать этот процесс.\n\n{0}\n\nЭта ссылка устареет через {1} минут.\n\nЕсли у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.
+executeActionsBodyHtml=<p>Администратор просит Вас обновить данные Вашей учетной записи {2}.  Нажмите по следующей ссылке чтобы начать этот процесс.</p><p><a href="{0}">{0}</a></p><p>Эта ссылка устареет через  {1} минут.</p><p>Если у вас есть подозрения, что администратор не мог сделать такой запрос, просто проигнорируйте это письмо.</p>
+eventLoginErrorSubject=Ошибка входа
+eventLoginErrorBody=Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
+eventLoginErrorBodyHtml=<p>Была зафиксирована неудачная попытка входа в Вашу учетную запись {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
+eventRemoveTotpSubject=Удалить OTP
+eventRemoveTotpBody=OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
+eventRemoveTotpBodyHtml=<p>OTP был удален из вашей учетной записи {0} c {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
+eventUpdatePasswordSubject=Обновление пароля
+eventUpdatePasswordBody=Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
+eventUpdatePasswordBodyHtml=<p>Ваш пароль был изменен в {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
+eventUpdateTotpSubject=Обновление OTP
+eventUpdateTotpBody=OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.
+eventUpdateTotpBodyHtml=<p>OTP был обновлен в вашей учетной записи {0} с {1}. Если это были не Вы, пожалуйста, свяжитесь с администратором.</p>
diff --git a/themes/custom-theme-template/email/messages/messages_sk.properties b/themes/custom-theme-template/email/messages/messages_sk.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e35cb07bb5a01f9e195a18edae11dec71f50a047
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_sk.properties
@@ -0,0 +1,49 @@
+emailVerificationSubject=Overenie e-mailu
+emailVerificationBody=Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz a overte svoju e-mailovú adresu \n\n{0}\n\nTento odkaz uplynie do {1} minút.\n\nAk ste tento účet nevytvorili, ignorujte túto správu.
+emailVerificationBodyHtml=<p>Niekto vytvoril účet {2} s touto e-mailovou adresou. Ak ste to vy, kliknite na nižšie uvedený odkaz na overenie svojej e-mailovej adresy.</p><p><a href="{0}"> Odkaz na overenie e-mailovej adresy </a></p><p>Platnosť odkazu vyprší za {1} minút.</p><p> Ak ste tento účet nevytvorili, ignorujte túto správu.</p>
+emailUpdateConfirmationSubject=Overenie nového e-mailu
+emailUpdateConfirmationBody=Ak chcete aktualizovať svoj {2} účet s e-mailovou adresou {1}, kliknite na odkaz nižšie\n\n{0}\n\nTento odkaz vyprší do {3}.\n\nAk nechcete pokračovať v tejto úprave, jednoducho ignorujte túto správu.
+emailUpdateConfirmationBodyHtml=<p>Ak chcete aktualizovať svoj {2} účet s e-mailovou adresou {1}, kliknite na odkaz nižšie</p><p><a href="{0}">{0}</a></p><p>Tento odkaz vyprší do {3}.</p><p>Ak nechcete pokračovať v tejto úprave, jednoducho ignorujte túto správu.</p>
+emailTestSubject=[KEYCLOAK] - Testovacia správa SMTP
+emailTestBody=Toto je skúšobná správa
+emailTestBodyHtml=<p>Toto je skúšobná správa</p>
+identityProviderLinkSubject=Odkaz {0}
+identityProviderLinkBody=Niekto chce prepojiť váš účet "{1}" s účtom "{0}"používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty. \n\n{3}\n\nTento odkaz uplynie do {4} minút.\n\nAk nechcete prepojiť účet, jednoducho ignorujte túto správu , Ak prepájate účty, budete sa môcť prihlásiť do {1} až {0}.
+identityProviderLinkBodyHtml=<p>Niekto chce prepojiť váš účet <b>{1}</b> s účtom <b>{0}</b> používateľa {2}. Ak ste to vy, kliknutím na odkaz nižšie prepojte účty</p><p><a href="{3}">Odkaz na potvrdenie prepojenia účtu </a></p><p> Platnosť tohto odkazu vyprší v rámci {4} minút.</p><p>Ak nechcete prepojiť účet, ignorujte túto správu. Ak prepojujete účty, budete sa môcť prihlásiť do {1} až {0}.</p>
+passwordResetSubject=Obnovenie hesla
+passwordResetBody=Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknite na odkaz uvedený nižšie, aby ste ich vynulovali.\n\n{0}\n\nTento odkaz a kód uplynie do {1} minút.\n\nAk nechcete obnoviť svoje poverenia , ignorujte túto správu a nič sa nezmení.
+passwordResetBodyHtml=<p>Niekto požiadal, aby ste zmenili svoje poverenia účtu {2}. Ak ste to vy, kliknutím na odkaz nižšie ich resetujte.</p><p><a href="{0}">Odkaz na obnovenie poverení </a></p><p>Platnosť tohto odkazu vyprší v priebehu {1} minút.</p><p>Ak nechcete obnoviť svoje poverenia, ignorujte túto správu a nič sa nezmení.</p>
+executeActionsSubject=Aktualizujte svoj účet
+executeActionsBody=Váš administrátor práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.\n\n{0}\n\nTento odkaz vyprší za {4}.\n\nAk si nie ste vedomý, že váš administrátor o toto požiadal, ignorujte túto správu a nič bude zmenené.
+executeActionsBodyHtml=<p>Váš správca práve požiadal o aktualizáciu vášho účtu {2} vykonaním nasledujúcich akcií: {3}. Kliknutím na odkaz uvedený nižšie spustíte tento proces.</p><p><a href="{0}"> Odkaz na aktualizáciu účtu </a></p><p> Platnosť tohto odkazu vyprší za {4}.</p><p> Ak si nie ste vedomí, že váš administrátor o toto požiadal, ignorujte túto správu a nič sa nezmení.</p>
+eventLoginErrorSubject=Chyba prihlásenia
+eventLoginErrorBody=Bol zistený neúspešný pokus o prihlásenie do vášho účtu v {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
+eventLoginErrorBodyHtml=<p>Bol zistený neúspešný pokus o prihlásenie vášho účtu na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
+eventRemoveTotpSubject=Odstrániť TOTP
+eventRemoveTotpBody=OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
+eventRemoveTotpBodyHtml=<p>OTP bol odstránený z vášho účtu dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
+eventUpdatePasswordSubject=Aktualizovať heslo
+eventUpdatePasswordBody=Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
+eventUpdatePasswordBodyHtml=<p>Vaše heslo bolo zmenené na {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
+eventUpdateTotpSubject=Aktualizácia TOTP
+eventUpdateTotpBody=TOTP bol aktualizovaný pre váš účet na {0} z {1}. Ak ste to neboli vy, obráťte sa na administrátora.
+eventUpdateTotpBodyHtml=<p>TOTP bol aktualizovaný pre váš účet dňa {0} z {1}. Ak ste to neboli vy, kontaktujte administrátora.</p>
+
+requiredAction.CONFIGURE_TOTP=Konfigurácia OTP
+requiredAction.TERMS_AND_CONDITIONS=Zmluvné podmienky
+requiredAction.UPDATE_PASSWORD=Aktualizovať heslo
+requiredAction.UPDATE_PROFILE=Aktualizovať profil
+requiredAction.VERIFY_EMAIL=Overiť e-mail
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generovanie kódov obnovy
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#sekúnd|1#sekunda|2#sekundy|4<sekúnd}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#minút|1#minúta|2#minúty|4<minút}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#hodín|1#hodina|2#hodiny|4<hodín}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#dní|1#deň|2#dni|4<dní}
+
+emailVerificationBodyCode=Prosím, overte svoju e-mailovú adresu zadaním nasledujúceho kódu.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Prosím overte svoju e-mailovú adresu zadaním nasledujúceho kódu.</p><p><b>{0}</b></p>
diff --git a/themes/custom-theme-template/email/messages/messages_sv.properties b/themes/custom-theme-template/email/messages/messages_sv.properties
new file mode 100755
index 0000000000000000000000000000000000000000..e1dd8121fdc412169dbcb9130928808a97ba13ab
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_sv.properties
@@ -0,0 +1,24 @@
+emailVerificationSubject=Verifiera e-post
+emailVerificationBody=Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.
+emailVerificationBodyHtml=<p>Någon har skapat ett {2} konto med den här e-postadressen. Om det var du, klicka då på länken nedan för att verifiera din e-postadress</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om det inte var du som skapade det här kontot, ignorera i så fall det här meddelandet.</p>
+identityProviderLinkSubject=Länk {0}
+identityProviderLinkBody=Någon vill länka ditt "{1}" konto med "{0}" kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona\n\n{3}\n\nDen här länken kommer att upphöra inom {4} minuter.\n\nOm du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.
+identityProviderLinkBodyHtml=<p>Någon vill länka ditt <b>{1}</b> konto med <b>{0}</b> kontot tillhörande användaren {2} . Om det var du, klicka då på länken nedan för att länka kontona</p><p><a href="{3}">{3}</a></p><p>Den här länken kommer att upphöra inom {4} minuter.</p><p>Om du inte vill länka kontot, ignorera i så fall det här meddelandet. Om du länkar kontona, så kan du logga in till {1} genom {0}.</p>
+passwordResetSubject=Återställ lösenord
+passwordResetBody=Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.\n\n{0}\n\nDen här länken och koden kommer att upphöra inom {1} minuter.\n\nOm du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.
+passwordResetBodyHtml=<p>Någon har precis bett om att ändra användaruppgifter för ditt konto {2}. Om det var du, klicka då på länken nedan för att återställa dem.</p><p><a href="{0}">{0}</a></p><p>Den här länken och koden kommer att upphöra inom {1} minuter.</p><p>Om du inte vill återställa dina kontouppgifter, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
+executeActionsSubject=Uppdatera ditt konto
+executeActionsBody=Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.\n\n{0}\n\nDen här länken kommer att upphöra inom {1} minuter.\n\nOm du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.
+executeActionsBodyHtml=<p>Din administratör har precis bett om att du skall uppdatera ditt {2} konto. Klicka på länken för att påbörja processen.</p><p><a href="{0}">{0}</a></p><p>Den här länken kommer att upphöra inom {1} minuter.</p><p>Om du är omedveten om att din administratör har bett om detta, ignorera i så fall det här meddelandet så kommer inget att ändras.</p>
+eventLoginErrorSubject=Inloggningsfel
+eventLoginErrorBody=Ett misslyckat inloggningsförsök har upptäckts på ditt konto på {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
+eventLoginErrorBodyHtml=<p>Ett misslyckat inloggningsförsök har upptäckts på ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
+eventRemoveTotpSubject=Ta bort OTP
+eventRemoveTotpBody=OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
+eventRemoveTotpBodyHtml=<p>OTP togs bort från ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
+eventUpdatePasswordSubject=Uppdatera lösenord
+eventUpdatePasswordBody=Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
+eventUpdatePasswordBodyHtml=<p>Ditt lösenord ändrades den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
+eventUpdateTotpSubject=Uppdatera OTP
+eventUpdateTotpBody=OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.
+eventUpdateTotpBodyHtml=<p>OTP uppdaterades för ditt konto den {0} från {1}. Om det inte var du, vänligen kontakta i så fall en administratör.</p>
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/messages/messages_th.properties b/themes/custom-theme-template/email/messages/messages_th.properties
new file mode 100644
index 0000000000000000000000000000000000000000..dc3d181f3dbb30cccd8f57b6da69cfc72fa0eafc
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_th.properties
@@ -0,0 +1,49 @@
+emailVerificationSubject=ตรวจสอบอีเมล
+emailVerificationBody=มีคนสร้างบัญชี {2} ด้วยที่อยู่อีเมลนี้ หากคุณเป็นผู้สร้างบัญชี คลิกที่ลิงก์ด้านล่างเพื่อยืนยันที่อยู่อีเมลของคุณ\n\n{0}\n\nลิงก์นี้จะหมดอายุภายใน {3}.\n\nถ้าคุณไม่ได้สร้างบัญชี ไม่ต้องสนใจข้อความนี้
+emailVerificationBodyHtml=<p>มีคนสร้างบัญชี {2} ด้วยที่อยู่อีเมลนี้ หากคุณเป็นผู้สร้างบัญชี คลิกที่ลิงก์ด้านล่างเพื่อยืนยันที่อยู่อีเมลของคุณ</p><p><a href="{0}">ลิงก์สำหรับการตรวจสอบที่อยู่อีเมล</a></p><p>ลิงก์นี้จะหมดอายุภายใน {3}.</p><p>ถ้าคุณไม่ได้สร้างบัญชี ไม่ต้องสนใจข้อความนี้</p>
+emailUpdateConfirmationSubject=ตรวจสอบอีเมลใหม่
+emailUpdateConfirmationBody=คลิกที่ลิงก์ด้านล่างเพื่อปรับปรุงบัญชี {2} ของคุณด้วยที่อยู่อีเมล {1}\n\n{0}\n\nลิงก์นี้จะหมดอายุภายใน {3}.\n\nหากคุณไม่ต้องการดำเนินการแก้ไข ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง
+emailUpdateConfirmationBodyHtml=<p>คลิกที่ลิงก์ด้านล่างเพื่อปรับปรุงบัญชี {2} ของคุณด้วยที่อยู่อีเมล {1}</p><p><a href="{0}">{0}</a></p><p>ลิงก์นี้จะหมดอายุภายใน {3}.</p><p>หากคุณไม่ต้องการดำเนินการแก้ไข ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง</p>
+emailTestSubject=[KEYCLOAK] - ข้อความทดสอบ SMTP
+emailTestBody=นี่คือข้อความทดสอบ
+emailTestBodyHtml=<p>นี่คือข้อความทดสอบ</p>
+identityProviderLinkSubject=เชื่อมโยง {0}
+identityProviderLinkBody=มีผู้ต้องการเชื่อมโยงบัญชี "{1}" ของคุณกับบัญชี "{0}" ของผู้ใช้งาน {2} หากคุณเป็นผู้ดำเนินการ กรุณาคลิกที่ลิงก์ด้านล่างเพื่อเชื่อมโยงบัญชี\n\n{3}\n\nลิงก์นี้จะหมดอายุภายใน {5}.\n\nหากคุณไม่ต้องการเชื่อมโยงบัญชี ไม่ต้องสนใจข้อความนี้ ถ้าคุณเชื่อมโยงบัญชี คุณจะสามารถเข้าสู่ระบบ {1} ผ่าน {0} ได้
+identityProviderLinkBodyHtml=<p>มีผู้ต้องการเชื่อมโยงบัญชี <b>{1}</b> ของคุณกับบัญชี <b>{0}</b> ของผู้ใช้งาน {2} หากคุณเป็นผู้ดำเนินการ กรุณาคลิกที่ลิงก์ด้านล่างเพื่อเชื่อมโยงบัญชี</p><p><a href="{3}">ลิงก์สำหรับการยืนยันการเชื่อมโยงบัญชี</a></p><p>ลิงก์นี้จะหมดอายุภายใน {5}.</p><p>หากคุณไม่ต้องการเชื่อมโยงบัญชี ไม่ต้องสนใจข้อความนี้ ถ้าคุณเชื่อมโยงบัญชี คุณจะสามารถเข้าสู่ระบบ {1} ผ่าน {0} ได้</p>
+passwordResetSubject=รีเซ็ตรหัสผ่าน
+passwordResetBody=มีการร้องขอเปลี่ยนข้อมูลการเข้าสู่ระบบของบัญชี {2} ของคุณ หากคุณเป็นผู้ดำเนินการ กรุณาคลิกที่ลิงก์ด้านล่างเพื่อรีเซ็ต\n\n{0}\n\nลิงก์และรหัสนี้จะหมดอายุภายใน {3}\n\nหากคุณไม่ต้องการรีเซ็ตข้อมูลการเข้าสู่ระบบ ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง
+passwordResetBodyHtml=<p>มีการร้องขอเปลี่ยนข้อมูลการเข้าสู่ระบบของบัญชี {2} ของคุณ หากคุณเป็นผู้ดำเนินการ กรุณาคลิกที่ลิงก์ด้านล่างเพื่อรีเซ็ต</p><p><a href="{0}">ลิงก์สำหรับการรีเซ็ตข้อมูล</a></p><p>ลิงก์นี้จะหมดอายุภายใน {3}</p><p>หากคุณไม่ต้องการรีเซ็ตข้อมูลการเข้าสู่ระบบ ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง</p>
+executeActionsSubject=ปรับปรุงบัญชีของคุณ
+executeActionsBody=ผู้ดูแลระบบของคุณได้ร้องขอให้คุณปรับปรุงบัญชี {2} ของคุณโดยการดำเนินการต่อไปนี้: {3} คลิกที่ลิงก์ด้านล่างเพื่อเริ่มกระบวนการนี้\n\n{0}\n\nลิงก์นี้จะหมดอายุภายใน {4}\n\nหากคุณไม่ทราบว่าผู้ดูแลระบบของคุณได้ร้องขอ ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง
+executeActionsBodyHtml=<p>ผู้ดูแลระบบของคุณได้ร้องขอให้คุณปรับปรุงบัญชี {2} ของคุณโดยการดำเนินการต่อไปนี้: {3} คลิกที่ลิงก์ด้านล่างเพื่อเริ่มกระบวนการนี้</p><p><a href="{0}">ลิงก์สำหรับการปรับปรุงบัญชี</a></p><p>ลิงก์นี้จะหมดอายุภายใน {4}.</p><p>หากคุณไม่ทราบว่าผู้ดูแลระบบของคุณได้ร้องขอ ไม่ต้องสนใจข้อความนี้ จะไม่มีสิ่งใดถูกเปลี่ยนแปลง</p>
+eventLoginErrorSubject=ข้อผิดพลาดในการเข้าสู่ระบบ
+eventLoginErrorBody=ตรวจพบความพยายามเข้าสู่ระบบที่ไม่สำเร็จด้วยบัญชีของคุณใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ
+eventLoginErrorBodyHtml=<p>ตรวจพบความพยายามเข้าสู่ระบบที่ไม่สำเร็จด้วยบัญชีของคุณใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ</p>
+eventRemoveTotpSubject=ลบ OTP
+eventRemoveTotpBody=OTP ถูกลบออกจากบัญชีของคุณใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ
+eventRemoveTotpBodyHtml=<p>OTP ถูกลบออกจากบัญชีของคุณใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ</p>
+eventUpdatePasswordSubject=ปรับปรุงรหัสผ่าน
+eventUpdatePasswordBody=รหัสผ่านของคุณถูกเปลี่ยนใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ
+eventUpdatePasswordBodyHtml=<p>รหัสผ่านของคุณถูกเปลี่ยนใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ</p>
+eventUpdateTotpSubject=ปรับปรุง OTP
+eventUpdateTotpBody=OTP สำหรับบัญชีของคุณถูกปรับปรุงใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ
+eventUpdateTotpBodyHtml=<p>OTP สำหรับบัญชีของคุณถูกปรับปรุงใน {0} จาก {1} หากคุณไม่ได้เป็นผู้ดำเนินการ โปรดติดต่อผู้ดูแลระบบ</p>
+
+requiredAction.CONFIGURE_TOTP=กำหนดค่า OTP
+requiredAction.TERMS_AND_CONDITIONS=ข้อกำหนดและเงื่อนไข
+requiredAction.UPDATE_PASSWORD=ปรับปรุงรหัสผ่าน
+requiredAction.UPDATE_PROFILE=ปรับปรุงโปรไฟล์
+requiredAction.VERIFY_EMAIL=ตรวจสอบอีเมล
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=สร้างรหัสการกู้คืน
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#วินาที|1#วินาที|1<วินาที}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#นาที|1#นาที|1<นาที}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#ชั่วโมง|1#ชั่วโมง|1<ชั่วโมง}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#วัน|1#วัน|1<วัน}
+
+emailVerificationBodyCode=กรุณายืนยันที่อยู่อีเมลของคุณโดยการใส่รหัสต่อไปนี้\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>กรุณายืนยันที่อยู่อีเมลของคุณโดยการใส่รหัสต่อไปนี้</p><p><b>{0}</b></p>
diff --git a/themes/custom-theme-template/email/messages/messages_tr.properties b/themes/custom-theme-template/email/messages/messages_tr.properties
new file mode 100755
index 0000000000000000000000000000000000000000..5605f10ec9cd0ae574f3185ebb473d0adfd8606f
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_tr.properties
@@ -0,0 +1,43 @@
+emailVerificationSubject=E-postayı doğrula
+emailVerificationBody=Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıya tıklayın\n\n{0}\n\nBu bağlantı {3} içinde sona erecek.\n\nBu hesabı oluşturmadıysanız, sadece bu iletiyi yoksayınız.
+emailVerificationBodyHtml=<p>Birisi bu e-posta adresiyle bir {2} hesap oluşturdu. Bu sizseniz, e-posta adresinizi doğrulamak için aşağıdaki bağlantıyı tıklayın.</p><p><a href="{0}">E-posta adresi doğrulama adresi</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Bu hesabı siz oluşturmadıysanız, bu mesajı göz ardı edin.</p>
+emailTestSubject=[KEYCLOAK] - SMTP test mesajı
+emailTestBody=Bu bir test mesajı
+emailTestBodyHtml=<p>Bu bir test mesajı</p>
+identityProviderLinkSubject=Link {0}
+identityProviderLinkBody=Birisi "{1}" hesabınızı "{0}" kullanıcı hesabı {2} ile bağlamak istiyor. Bu sizseniz, hesapları bağlamak için aşağıdaki bağlantıyı tıklayın:\n\n{3}\n\nBu bağlantı {5} içinde sona erecek.\n\nHesabınızı bağlamak istemiyorsanız bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.
+identityProviderLinkBodyHtml=<p>Birisi <b> {1} </ b> hesabınızı {2} kullanıcısı <b> {0} </ b> hesabına bağlamak istiyor. Bu sizseniz, bağlantı vermek için aşağıdaki bağlantıyı tıklayın</p><p><a href="{3}">Hesap bağlantısını onaylamak için bağlantı</a></p><p>Bu bağlantının süresi {5} içerisinde sona erecek.</p><p>Hesabı bağlamak istemiyorsanız, bu mesajı göz ardı edin. Hesapları bağlarsanız, {1} ile {0} arasında oturum açabilirsiniz.</p>
+passwordResetSubject=Şifreyi sıfırla
+passwordResetBody=Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi.Bu sizseniz, sıfırlamak için aşağıdaki bağlantıyı tıklayın.\n\n{0}\n\nBu bağlantı ve kod {3} içinde sona erecek.\n\nFakat bilgilerinizi sıfırlamak istemiyorsanız, Sadece bu mesajı görmezden gelin ve hiçbir şey değişmeyecek.
+passwordResetBodyHtml=<p>Birisi, {2} hesabınızın kimlik bilgilerini değiştirmeyi istedi. Sizseniz, sıfırlamak için aşağıdaki linke tıklayınız.</p><p><a href="{0}">Kimlik bilgilerini sıfırlamak için bağlantı</a></p><p>Bu bağlantının süresi {3} içerisinde sona erecek.</p><p>Kimlik bilgilerinizi sıfırlamak istemiyorsanız, bu mesajı göz ardı edin.</p>
+executeActionsSubject=Hesabınızı Güncelleyin
+executeActionsBody=Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.\n\n{0}\n\nBu bağlantının süresi {4} içerisinde sona erecek.\n\nYöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.
+executeActionsBodyHtml=<p>Yöneticiniz aşağıdaki işlemleri gerçekleştirerek {2} hesabınızı güncelledi: {3}. Bu işlemi başlatmak için aşağıdaki linke tıklayın.</p><p><a href="{0}">Hesap güncelleme bağlantısı</a></p><p>Bu bağlantının süresi {4} içerisinde sona erecek.</p><p>Yöneticinizin bunu istediğinden habersizseniz, bu mesajı göz ardı edin ve hiçbir şey değişmez.</p>
+eventLoginErrorSubject=Giriş hatası
+eventLoginErrorBody={1} ''den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.
+eventLoginErrorBodyHtml=<p>{1} ''den {0} tarihinde başarısız bir giriş denemesi yapıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>
+eventRemoveTotpSubject=OTP''yi kaldır
+eventRemoveTotpBody=OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.
+eventRemoveTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesabınızdan kaldırıldı. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>
+eventUpdatePasswordSubject=Şifreyi güncelle
+eventUpdatePasswordBody=Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.
+eventUpdatePasswordBodyHtml=<p>Şifreniz {0} tarihinde {0} tarihinde değiştirildi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>
+eventUpdateTotpSubject=OTP''yi Güncelle
+eventUpdateTotpBody=OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.
+eventUpdateTotpBodyHtml=<p>OTP, {0} tarihinden {1} tarihinde hesabınız için güncellendi. Bu siz değilseniz, lütfen yöneticiyle iletişime geçin.</p>
+
+requiredAction.CONFIGURE_TOTP=OTP''yi yapılandır
+requiredAction.TERMS_AND_CONDITIONS=Şartlar ve Koşullar
+requiredAction.UPDATE_PASSWORD=Şifre Güncelleme
+requiredAction.UPDATE_PROFILE=Profilleri güncelle
+requiredAction.VERIFY_EMAIL=E-mail doğrula
+
+# units for link expiration timeout formatting
+linkExpirationFormatter.timePeriodUnit.seconds=saniye
+linkExpirationFormatter.timePeriodUnit.minutes=dakika
+linkExpirationFormatter.timePeriodUnit.hours=saat
+linkExpirationFormatter.timePeriodUnit.days=gün
+
+emailVerificationBodyCode=Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Lütfen aşağıdaki kodu girerek e-posta adresinizi doğrulayın.</p><p><b>{0}</b></p>
+
diff --git a/themes/custom-theme-template/email/messages/messages_uk.properties b/themes/custom-theme-template/email/messages/messages_uk.properties
new file mode 100755
index 0000000000000000000000000000000000000000..f5487ac78a1572f752314a6a68b9d674b6aa2cc0
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_uk.properties
@@ -0,0 +1,49 @@
+emailVerificationSubject=Підтвердити адресу електронної пошти
+emailVerificationBody=Хтось створив обліковий запис {2} із цією адресою електронної пошти. Якщо це були Ви, натисніть на посилання нижче, щоб підтвердити свою адресу електронної пошти\n\n{0}\n\nЦе посилання дійсне протягом {3}.\n\nЯкщо Ви не створювали цей обліковий запис, просто проігноруйте цей лист.
+emailVerificationBodyHtml=<p>Хтось створив обліковий запис {2} із цією адресою електронної пошти. Якщо це були Ви, натисніть на посилання нижче, щоб підтвердити свою адресу електронної пошти</p><p><a href="{0}">Посилання на підтвердження адресу електронної пошти</a></p><p>Це посилання дійсне протягом {3}.</p><p>Якщо Ви не створювали цей обліковий запис, просто проігноруйте цей лист.</p>
+emailUpdateConfirmationSubject=Підтвердіть нову адресу електронної пошти
+emailUpdateConfirmationBody=Щоб оновити адресу електронної пошти {1} облікового запису {2}, натисніть на посилання нижче\n\n{0}\n\nЦе посилання дійсне протягом {3}.\n\nЯкщо Ви не бажаєте застосувати ці зміни, просто проігноруйте цей лист.
+emailUpdateConfirmationBodyHtml=<p>Щоб оновити адресу електронної пошти {1} облікового запису {2}, натисніть на посилання нижче</p><p><a href="{0}">{0}</a></p ><p>Це посилання дійсне протягом {3}.</p><p>Якщо Ви не бажаєте застосувати ці зміни, просто проігноруйте цей лист.</p>
+emailTestSubject=[KEYCLOAK] - тестове повідомлення SMTP
+emailTestBody=Це тестове повідомлення
+emailTestBodyHtml=<p>Це тестове повідомлення</p>
+identityProviderLinkSubject=Посилання {0}
+identityProviderLinkBody=Хтось хоче зв''язати Ваш обліковий запис "{1}" з обліковим записом "{0}" користувача {2}. Якщо це були Ви, натисніть на посилання нижче, щоб зв''язати облікові записи\n\n{3}\n\nЦе посилання дійсне протягом {5}.\n\nЯкщо Ви не бажаєте зв''язати облікові записи, просто проігноруйте цей лист. Якщо зв''язати облікові записи, Ви зможете увійти в {1} через {0}.
+identityProviderLinkBodyHtml=<p>Хтось хоче зв''язати Ваш обліковий запис <b>{1}</b> з обліковим записом <b>{0}</b> користувача {2}. Якщо це були Ви, натисніть на посилання нижче, щоб зв''язати облікові записи</p><p><a href="{3}">Посилання для підтвердження зв''язування облікових записів</a></p><p>Це посилання дійсне протягом {5}.</p><p>Якщо Ви не бажаєте зв''язати облікові записи, просто проігноруйте цей лист. Якщо зв''язати облікові записи, Ви зможете увійти в {1} через {0}.</p>
+passwordResetSubject=Скинути пароль
+passwordResetBody=Хтось щойно запросив зміну паролю Вашого облікового запису {2}. Якщо це були Ви, натисніть на посилання нижче, щоб скинути пароль.\n\n{0}\n\nЦе посилання дійсне протягом {3}.\n\nЯкщо Ви не бажаєте скинути пароль, просто проігноруйте цей лист, і нічого не зміниться.
+passwordResetBodyHtml=<p>Хтось щойно запросив зміну паролю Вашого облікового запису {2}. Якщо це були Ви, натисніть на посилання нижче, щоб скинути пароль.</p><p><a href="{0}">Посилання для скидання паролю</a></p><p>Це посилання дійсне протягом {3}.</p><p>Якщо Ви не бажаєте скинути пароль, просто проігноруйте цей лист, і нічого не зміниться.</p>
+executeActionsSubject=Оновлення Вашого облікового запису
+executeActionsBody=Адміністратор просить Вас оновити інформацію Вашого облікового запису {2}. Натисніть на посилання нижче, щоб розпочати цей процес.\n\n{0}\n\nЦе посилання дійсне протягом {4}.\n\nЯкщо у Вас є сумніви щодо того, що адміністратор дійсно подав такий запит, просто проігноруйте цей лист.
+executeActionsBodyHtml=<p>Адміністратор просить Вас оновити інформацію Вашого облікового запису {2}. Натисніть на посилання нижче, щоб почати цей процес.</p><p><a href="{0}">Посилання на оновлення інформації облікового запису</a></p><p>Це посилання дійсне протягом {4} .</p><p>Якщо у Вас є сумніви щодо того, що адміністратор дійсно подав такий запит, просто проігноруйте цей лист.</p>
+eventLoginErrorSubject=Помилка входу
+eventLoginErrorBody=Виявлено невдалу спробу входу до Вашого облікового запису {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.
+eventLoginErrorBodyHtml=<p>Виявлено невдалу спробу входу до Вашого облікового запису {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.</p>
+eventRemoveTotpSubject=Видалення OTP
+eventRemoveTotpBody=OTP було видалено з Вашого облікового запису {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.
+eventRemoveTotpBodyHtml=<p>OTP було видалено з Вашого облікового запису {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.</p>
+eventUpdatePasswordSubject=Зміна паролю
+eventUpdatePasswordBody=Ваш пароль був змінений {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.
+eventUpdatePasswordBodyHtml=<p>Ваш пароль був змінений {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.</p>
+eventUpdateTotpSubject=Оновлення OTP
+eventUpdateTotpBody=OTP було оновлено для Вашого облікового запису {0} від {1}. Якщо це були не Ви, зверніться до адміністратора.
+eventUpdateTotpBodyHtml=<p>OTP було оновлено для Вашого облікового запису {0} з {1}. Якщо це були не Ви, зверніться до адміністратора.</p>
+
+requiredAction.CONFIGURE_TOTP=Налаштувати OTP
+requiredAction.TERMS_AND_CONDITIONS=Умови
+requiredAction.UPDATE_PASSWORD=Змінити пароль
+requiredAction.UPDATE_PROFILE=Оновити профіль
+requiredAction.VERIFY_EMAIL=Підтвердити адресу електронної пошти
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Генерувати коди відновлення
+
+# units for link expiration timeout formatting
+# for languages which have more unit plural forms depending on the value (eg. Czech and other Slavic langs) you can override unit text for some other values like described in the Java choice format which is documented here. For Czech, it would be '{0,choice,0#minut|1#minuta|2#minuty|2<minut}'
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/MessageFormat.html
+# https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/text/ChoiceFormat.html
+linkExpirationFormatter.timePeriodUnit.seconds={0,choice,0#секунд|1#секунди|1<секунд}
+linkExpirationFormatter.timePeriodUnit.minutes={0,choice,0#хвилин|1#хвилини|1<хвилин}
+linkExpirationFormatter.timePeriodUnit.hours={0,choice,0#годин|1#години|1<годин}
+linkExpirationFormatter.timePeriodUnit.days={0,choice,0#днів|1#дня|1<днів}
+
+emailVerificationBodyCode=Будь ласка, підтвердіть свою адресу електронної пошти, ввівши наступний код.\n\n{0}\n\n.
+emailVerificationBodyCodeHtml=<p>Будь ласка, підтвердіть свою адресу електронної пошти, ввівши наступний код.</p><p><b>{0}</b></p>
diff --git a/themes/custom-theme-template/email/messages/messages_zh_CN.properties b/themes/custom-theme-template/email/messages/messages_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8bc782b154537343058bcff21f00b901e93f51d9
--- /dev/null
+++ b/themes/custom-theme-template/email/messages/messages_zh_CN.properties
@@ -0,0 +1,24 @@
+emailVerificationSubject=验证电子邮件
+emailVerificationBody=用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您没有注册用户,请忽略这条消息。
+emailVerificationBodyHtml=<p>用户使用当前电子邮件注册 {2} 账户。如是本人操作,请点击以下链接完成邮箱验证</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期.</p><p>如果您没有注册用户,请忽略这条消息。</p>
+identityProviderLinkSubject=链接 {0}
+identityProviderLinkBody=有用户想要将账户 "{1}" 与用户{2}的账户"{0}" 做链接 . 如果是本人操作,请点击以下链接完成链接请求\n\n{3}\n\n这个链接会在 {4} 分钟后过期.\n\n如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.
+identityProviderLinkBodyHtml=<p>有用户想要将账户 <b>{1}</b> 与用户{2} 的账户<b>{0}</b>  做链接 . 如果是本人操作,请点击以下链接完成链接请求</p><p><a href="{3}">{3}</a></p><p>这个链接会在 {4} 分钟后过期。</p><p>如非本人操作,请忽略这条消息。如果您链接账户,您将可以通过{0}登录账户 {1}.</p>
+passwordResetSubject=重置密码
+passwordResetBody=有用户要求修改账户 {2} 的密码.如是本人操作,请点击下面链接进行重置.\n\n{0}\n\n这个链接会在 {1} 分钟后过期.\n\n如果您不想重置您的密码,请忽略这条消息,密码不会改变。
+passwordResetBodyHtml=<p>有用户要求修改账户 {2} 的密码如是本人操作,请点击下面链接进行重置.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后过期</p><p>如果您不想重置您的密码,请忽略这条消息,密码不会改变。</p>
+executeActionsSubject=更新您的账户
+executeActionsBody=您的管理员要求您更新账户 {2}. 点击以下链接开始更新\n\n{0}\n\n这个链接会在 {1} 分钟后失效.\n\n如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。
+executeActionsBodyHtml=<p>您的管理员要求您更新账户{2}.  点击以下链接开始更新.</p><p><a href="{0}">{0}</a></p><p>这个链接会在 {1} 分钟后失效.</p><p>如果您不知道管理员要求更新账户信息,请忽略这条消息。账户信息不会修改。</p>
+eventLoginErrorSubject=登录错误
+eventLoginErrorBody=在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.
+eventLoginErrorBodyHtml=<p>在{0} 由 {1}使用您的账户登录失败. 如果这不是您本人操作,请联系管理员.</p>
+eventRemoveTotpSubject=删除 OTP
+eventRemoveTotpBody=OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员
+eventRemoveTotpBodyHtml=<p>OTP在 {0} 由{1} 从您的账户中删除.如果这不是您本人操作,请联系管理员。</p>
+eventUpdatePasswordSubject=更新密码
+eventUpdatePasswordBody=您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员
+eventUpdatePasswordBodyHtml=<p>您的密码在{0} 由 {1}更改. 如非本人操作,请联系管理员</p>
+eventUpdateTotpSubject=更新 OTP
+eventUpdateTotpBody=您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。
+eventUpdateTotpBodyHtml=<p>您账户的OTP 配置在{0} 由 {1}更改. 如非本人操作,请联系管理员。</p>
diff --git a/themes/custom-theme-template/email/text/email-test.ftl b/themes/custom-theme-template/email/text/email-test.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..f1becdd2a64fe22c62c31393a05304ab2d804ac4
--- /dev/null
+++ b/themes/custom-theme-template/email/text/email-test.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("emailTestBody", realmName)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/email-update-confirmation.ftl b/themes/custom-theme-template/email/text/email-update-confirmation.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..335d9a848daef5473d596e6148abe71a1ddf97a7
--- /dev/null
+++ b/themes/custom-theme-template/email/text/email-update-confirmation.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("emailUpdateConfirmationBody",link, newEmail, realmName, linkExpirationFormatter(linkExpiration))}
diff --git a/themes/custom-theme-template/email/text/email-verification-with-code.ftl b/themes/custom-theme-template/email/text/email-verification-with-code.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..4ffb7d8798ee314114e602b979206fafba9025f1
--- /dev/null
+++ b/themes/custom-theme-template/email/text/email-verification-with-code.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("emailVerificationBodyCode",code)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/email-verification.ftl b/themes/custom-theme-template/email/text/email-verification.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..9e39696320a4a117b17e6a43d62cfdf6947b7fb2
--- /dev/null
+++ b/themes/custom-theme-template/email/text/email-verification.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("emailVerificationBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/event-login_error.ftl b/themes/custom-theme-template/email/text/event-login_error.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..bfb4036f58cdf1c88e535f0b45a6b926e38273be
--- /dev/null
+++ b/themes/custom-theme-template/email/text/event-login_error.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("eventLoginErrorBody",event.date,event.ipAddress)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/event-remove_totp.ftl b/themes/custom-theme-template/email/text/event-remove_totp.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..a7e3b6860f1eedf9439399aec955bfc47175b7e4
--- /dev/null
+++ b/themes/custom-theme-template/email/text/event-remove_totp.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("eventRemoveTotpBody",event.date, event.ipAddress)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/event-update_password.ftl b/themes/custom-theme-template/email/text/event-update_password.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..2ec7ea01e02b6735f7c9cb301280576497c76871
--- /dev/null
+++ b/themes/custom-theme-template/email/text/event-update_password.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("eventUpdatePasswordBody",event.date, event.ipAddress)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/event-update_totp.ftl b/themes/custom-theme-template/email/text/event-update_totp.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..14778b5fff41754da175c37b21d529b6cc234195
--- /dev/null
+++ b/themes/custom-theme-template/email/text/event-update_totp.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("eventUpdateTotpBody",event.date, event.ipAddress)}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/executeActions.ftl b/themes/custom-theme-template/email/text/executeActions.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..6610c7adabff09bb97783bed094bd3d6f1461008
--- /dev/null
+++ b/themes/custom-theme-template/email/text/executeActions.ftl
@@ -0,0 +1,4 @@
+<#ftl output_format="plainText">
+<#assign requiredActionsText><#if requiredActions??><#list requiredActions><#items as reqActionItem>${msg("requiredAction.${reqActionItem}")}<#sep>, </#items></#list><#else></#if></#assign>
+
+${msg("executeActionsBody",link, linkExpiration, realmName, requiredActionsText, linkExpirationFormatter(linkExpiration))}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/identity-provider-link.ftl b/themes/custom-theme-template/email/text/identity-provider-link.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..17e3cc45a4be71848166416f955e8812fefceb8e
--- /dev/null
+++ b/themes/custom-theme-template/email/text/identity-provider-link.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("identityProviderLinkBody", identityProviderDisplayName, realmName, identityProviderContext.username, link, linkExpiration, linkExpirationFormatter(linkExpiration))}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/text/password-reset.ftl b/themes/custom-theme-template/email/text/password-reset.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..27405c9a422da50fe68a1e51d0ac4a15dc14c440
--- /dev/null
+++ b/themes/custom-theme-template/email/text/password-reset.ftl
@@ -0,0 +1,2 @@
+<#ftl output_format="plainText">
+${msg("passwordResetBody",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration))}
\ No newline at end of file
diff --git a/themes/custom-theme-template/email/theme.properties b/themes/custom-theme-template/email/theme.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4162299c96377d8604c3eedfe1e13f3f48fea955
--- /dev/null
+++ b/themes/custom-theme-template/email/theme.properties
@@ -0,0 +1 @@
+locales=ar,ca,cs,da,de,el,en,es,fa,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,th,tr,uk,zh-CN
diff --git a/themes/custom-theme-template/login/cli_splash.ftl b/themes/custom-theme-template/login/cli_splash.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..cd9ebbb7a2c7c06b399318844037d7fd530650eb
--- /dev/null
+++ b/themes/custom-theme-template/login/cli_splash.ftl
@@ -0,0 +1,7 @@
+ _  __               _             _
+| |/ /___ _   _  ___| | ___   __ _| | __
+| ' // _ \ | | |/ __| |/ _ \ / _` | |/ /
+| . \  __/ |_| | (__| | (_) | (_| |   <
+|_|\_\___|\__, |\___|_|\___/ \__,_|_|\_\
+          |___/
+
diff --git a/themes/custom-theme-template/login/code.ftl b/themes/custom-theme-template/login/code.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..bb0621db93f6dda96a06927247c4d82bc0d6ea87
--- /dev/null
+++ b/themes/custom-theme-template/login/code.ftl
@@ -0,0 +1,19 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        <#if code.success>
+            ${msg("codeSuccessTitle")}
+        <#else>
+            ${kcSanitize(msg("codeErrorTitle", code.error))}
+        </#if>
+    <#elseif section = "form">
+        <div id="kc-code">
+            <#if code.success>
+                <p>${msg("copyCodeInstruction")}</p>
+                <input id="code" class="${properties.kcTextareaClass!}" value="${code.code}"/>
+            <#else>
+                <p id="error">${kcSanitize(code.error)}</p>
+            </#if>
+        </div>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/delete-account-confirm.ftl b/themes/custom-theme-template/login/delete-account-confirm.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..6aa93f096485e1ff9dced78faf3f7ca3e0548a71
--- /dev/null
+++ b/themes/custom-theme-template/login/delete-account-confirm.ftl
@@ -0,0 +1,33 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+
+    <#if section = "header">
+            ${msg("deleteAccountConfirm")}
+
+   <#elseif section = "form">
+
+    <form action="${url.loginAction}" class="form-vertical" method="post">
+
+       <div class="alert alert-warning" style="margin-top:0 !important;margin-bottom:30px !important">
+           <span class="pficon pficon-warning-triangle-o"></span>
+           ${msg("irreversibleAction")}
+       </div>
+
+       <p>${msg("deletingImplies")}</p>
+       <ul style="color: #72767b;list-style: disc;list-style-position: inside;">
+         <li>${msg("loggingOutImmediately")}</li>
+         <li>${msg("errasingData")}</li>
+       </ul>
+
+        <p class="delete-account-text">${msg("finalDeletionConfirmation")}</p>
+
+      <div id="kc-form-buttons">
+            <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doConfirmDelete")}" />
+            <#if triggered_from_aia>
+            <button class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" style="margin-left: calc(100% - 220px)" type="submit" name="cancel-aia" value="true" />${msg("doCancel")}</button>
+            </#if>
+       </div>
+    </form>
+   </#if>
+
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/delete-credential.ftl b/themes/custom-theme-template/login/delete-credential.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..57f30e709ea6454a5b35e08db52cc3739eaebfdb
--- /dev/null
+++ b/themes/custom-theme-template/login/delete-credential.ftl
@@ -0,0 +1,15 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=false; section>
+    <#if section = "header">
+        ${msg("deleteCredentialTitle", credentialLabel)}
+    <#elseif section = "form">
+    <div id="kc-delete-text">
+        ${msg("deleteCredentialMessage", credentialLabel)}
+    </div>
+    <form class="form-actions" action="${url.loginAction}" method="POST">
+        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="accept" id="kc-accept" type="submit" value="${msg("doConfirmDelete")}"/>
+        <input class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="cancel-aia" value="${msg("doCancel")}" id="kc-decline" type="submit" />
+    </form>
+    <div class="clearfix"></div>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/error.ftl b/themes/custom-theme-template/login/error.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..112ded3eae26f55d42e449a97334102aaaeb03ee
--- /dev/null
+++ b/themes/custom-theme-template/login/error.ftl
@@ -0,0 +1,16 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=false; section>
+    <#if section = "header">
+        ${kcSanitize(msg("errorTitle"))?no_esc}
+    <#elseif section = "form">
+        <div id="kc-error-message">
+            <p class="instruction">${kcSanitize(message.summary)?no_esc}</p>
+            <#if skipLink??>
+            <#else>
+                <#if client?? && client.baseUrl?has_content>
+                    <p><a id="backToApplication" href="${client.baseUrl}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
+                </#if>
+            </#if>
+        </div>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/frontchannel-logout.ftl b/themes/custom-theme-template/login/frontchannel-logout.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..3de7d2500eecc0ebc460eb5125c1f65d4a58a24d
--- /dev/null
+++ b/themes/custom-theme-template/login/frontchannel-logout.ftl
@@ -0,0 +1,30 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        <script>
+            document.title =  "${msg("frontchannel-logout.title")}";
+        </script>
+        ${msg("frontchannel-logout.title")}
+    <#elseif section = "form">
+        <p>${msg("frontchannel-logout.message")}</p>
+        <ul>
+        <#list logout.clients as client>
+            <li>
+                ${client.name}
+                <iframe src="${client.frontChannelLogoutUrl}" style="display:none;"></iframe>
+            </li>
+        </#list>
+        </ul>
+        <#if logout.logoutRedirectUri?has_content>
+            <script>
+                function readystatechange(event) {
+                    if (document.readyState=='complete') {
+                        window.location.replace('${logout.logoutRedirectUri}');
+                    }
+                }
+                document.addEventListener('readystatechange', readystatechange);
+            </script>
+            <a id="continue" class="btn btn-primary" href="${logout.logoutRedirectUri}">${msg("doContinue")}</a>
+        </#if>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/idp-review-user-profile.ftl b/themes/custom-theme-template/login/idp-review-user-profile.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..1b70aeccb9a1f2b951c2ce8a000cd41a5bdc3e17
--- /dev/null
+++ b/themes/custom-theme-template/login/idp-review-user-profile.ftl
@@ -0,0 +1,23 @@
+<#import "template.ftl" as layout>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+    <#if section = "header">
+        ${msg("loginIdpReviewProfileTitle")}
+    <#elseif section = "form">
+        <form id="kc-idp-review-profile-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+
+            <@userProfileCommons.userProfileFormFields/>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/info.ftl b/themes/custom-theme-template/login/info.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..400e8bfdff425432e6433a592df94c4b7c9b0c0e
--- /dev/null
+++ b/themes/custom-theme-template/login/info.ftl
@@ -0,0 +1,24 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=false; section>
+    <#if section = "header">
+        <#if messageHeader??>
+        ${messageHeader}
+        <#else>
+        ${message.summary}
+        </#if>
+    <#elseif section = "form">
+    <div id="kc-info-message">
+        <p class="instruction">${message.summary}<#if requiredActions??><#list requiredActions>: <b><#items as reqActionItem>${kcSanitize(msg("requiredAction.${reqActionItem}"))?no_esc}<#sep>, </#items></b></#list><#else></#if></p>
+        <#if skipLink??>
+        <#else>
+            <#if pageRedirectUri?has_content>
+                <p><a href="${pageRedirectUri}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
+            <#elseif actionUri?has_content>
+                <p><a href="${actionUri}">${kcSanitize(msg("proceedWithAction"))?no_esc}</a></p>
+            <#elseif (client.baseUrl)?has_content>
+                <p><a href="${client.baseUrl}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
+            </#if>
+        </#if>
+    </div>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-config-totp.ftl b/themes/custom-theme-template/login/login-config-totp.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..5b21da49cfe9353c04de77d45d586919c6c809ff
--- /dev/null
+++ b/themes/custom-theme-template/login/login-config-totp.ftl
@@ -0,0 +1,113 @@
+<#import "template.ftl" as layout>
+<#import "password-commons.ftl" as passwordCommons>
+<@layout.registrationLayout displayRequiredFields=false displayMessage=!messagesPerField.existsError('totp','userLabel'); section>
+
+    <#if section = "header">
+        ${msg("loginTotpTitle")}
+    <#elseif section = "form">
+        <ol id="kc-totp-settings">
+            <li>
+                <p>${msg("loginTotpStep1")}</p>
+
+                <ul id="kc-totp-supported-apps">
+                    <#list totp.supportedApplications as app>
+                        <li>${msg(app)}</li>
+                    </#list>
+                </ul>
+            </li>
+
+            <#if mode?? && mode = "manual">
+                <li>
+                    <p>${msg("loginTotpManualStep2")}</p>
+                    <p><span id="kc-totp-secret-key">${totp.totpSecretEncoded}</span></p>
+                    <p><a href="${totp.qrUrl}" id="mode-barcode">${msg("loginTotpScanBarcode")}</a></p>
+                </li>
+                <li>
+                    <p>${msg("loginTotpManualStep3")}</p>
+                    <p>
+                    <ul>
+                        <li id="kc-totp-type">${msg("loginTotpType")}: ${msg("loginTotp." + totp.policy.type)}</li>
+                        <li id="kc-totp-algorithm">${msg("loginTotpAlgorithm")}: ${totp.policy.getAlgorithmKey()}</li>
+                        <li id="kc-totp-digits">${msg("loginTotpDigits")}: ${totp.policy.digits}</li>
+                        <#if totp.policy.type = "totp">
+                            <li id="kc-totp-period">${msg("loginTotpInterval")}: ${totp.policy.period}</li>
+                        <#elseif totp.policy.type = "hotp">
+                            <li id="kc-totp-counter">${msg("loginTotpCounter")}: ${totp.policy.initialCounter}</li>
+                        </#if>
+                    </ul>
+                    </p>
+                </li>
+            <#else>
+                <li>
+                    <p>${msg("loginTotpStep2")}</p>
+                    <img id="kc-totp-secret-qr-code" src="data:image/png;base64, ${totp.totpSecretQrCode}" alt="Figure: Barcode"><br/>
+                    <p><a href="${totp.manualUrl}" id="mode-manual">${msg("loginTotpUnableToScan")}</a></p>
+                </li>
+            </#if>
+            <li>
+                <p>${msg("loginTotpStep3")}</p>
+                <p>${msg("loginTotpStep3DeviceName")}</p>
+            </li>
+        </ol>
+
+        <form action="${url.loginAction}" class="${properties.kcFormClass!}" id="kc-totp-settings-form" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcInputWrapperClass!}">
+                    <label for="totp" class="control-label">${msg("authenticatorCode")}</label> <span class="required">*</span>
+                </div>
+                <div class="${properties.kcInputWrapperClass!}">
+                    <input type="text" id="totp" name="totp" autocomplete="off" class="${properties.kcInputClass!}"
+                           aria-invalid="<#if messagesPerField.existsError('totp')>true</#if>"
+                    />
+
+                    <#if messagesPerField.existsError('totp')>
+                        <span id="input-error-otp-code" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                            ${kcSanitize(messagesPerField.get('totp'))?no_esc}
+                        </span>
+                    </#if>
+
+                </div>
+                <input type="hidden" id="totpSecret" name="totpSecret" value="${totp.totpSecret}" />
+                <#if mode??><input type="hidden" id="mode" name="mode" value="${mode}"/></#if>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcInputWrapperClass!}">
+                    <label for="userLabel" class="control-label">${msg("loginTotpDeviceName")}</label> <#if totp.otpCredentials?size gte 1><span class="required">*</span></#if>
+                </div>
+
+                <div class="${properties.kcInputWrapperClass!}">
+                    <input type="text" class="${properties.kcInputClass!}" id="userLabel" name="userLabel" autocomplete="off"
+                           aria-invalid="<#if messagesPerField.existsError('userLabel')>true</#if>"
+                    />
+
+                    <#if messagesPerField.existsError('userLabel')>
+                        <span id="input-error-otp-label" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                            ${kcSanitize(messagesPerField.get('userLabel'))?no_esc}
+                        </span>
+                    </#if>
+                </div>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <@passwordCommons.logoutOtherSessions/>
+            </div>
+
+            <#if isAppInitiatedAction??>
+                <input type="submit"
+                       class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}"
+                       id="saveTOTPBtn" value="${msg("doSubmit")}"
+                />
+                <button type="submit"
+                        class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!} ${properties.kcButtonLargeClass!}"
+                        id="cancelTOTPBtn" name="cancel-aia" value="true" />${msg("doCancel")}
+                </button>
+            <#else>
+                <input type="submit"
+                       class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                       id="saveTOTPBtn" value="${msg("doSubmit")}"
+                />
+            </#if>
+        </form>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-idp-link-confirm.ftl b/themes/custom-theme-template/login/login-idp-link-confirm.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..c3537c5d3e9190b8a6a5eeadb7e3f14a2a5efcec
--- /dev/null
+++ b/themes/custom-theme-template/login/login-idp-link-confirm.ftl
@@ -0,0 +1,13 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("confirmLinkIdpTitle")}
+    <#elseif section = "form">
+        <form id="kc-register-form" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="updateProfile" value="updateProfile">${msg("confirmLinkIdpReviewProfile")}</button>
+                <button type="submit" class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="submitAction" id="linkAccount" value="linkAccount">${msg("confirmLinkIdpContinue", idpDisplayName)}</button>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-idp-link-email.ftl b/themes/custom-theme-template/login/login-idp-link-email.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..0020178f06d59a403d4655eea1c62ce157e93e77
--- /dev/null
+++ b/themes/custom-theme-template/login/login-idp-link-email.ftl
@@ -0,0 +1,16 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("emailLinkIdpTitle", idpDisplayName)}
+    <#elseif section = "form">
+        <p id="instruction1" class="instruction">
+            ${msg("emailLinkIdp1", idpDisplayName, brokerContext.username, realm.displayName)}
+        </p>
+        <p id="instruction2" class="instruction">
+            ${msg("emailLinkIdp2")} <a href="${url.loginAction}">${msg("doClickHere")}</a> ${msg("emailLinkIdp3")}
+        </p>
+        <p id="instruction3" class="instruction">
+            ${msg("emailLinkIdp4")} <a href="${url.loginAction}">${msg("doClickHere")}</a> ${msg("emailLinkIdp5")}
+        </p>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-oauth-grant.ftl b/themes/custom-theme-template/login/login-oauth-grant.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..d5cfc4aac78da3d047388d6a57d4925432f26a1d
--- /dev/null
+++ b/themes/custom-theme-template/login/login-oauth-grant.ftl
@@ -0,0 +1,68 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout bodyClass="oauth"; section>
+    <#if section = "header">
+        <#if client.attributes.logoUri??>
+            <img src="${client.attributes.logoUri}"/>
+        </#if>
+        <p>
+        <#if client.name?has_content>
+            ${msg("oauthGrantTitle",advancedMsg(client.name))}
+        <#else>
+            ${msg("oauthGrantTitle",client.clientId)}
+        </#if>
+        </p>
+    <#elseif section = "form">
+        <div id="kc-oauth" class="content-area">
+            <h3>${msg("oauthGrantRequest")}</h3>
+            <ul>
+                <#if oauth.clientScopesRequested??>
+                    <#list oauth.clientScopesRequested as clientScope>
+                        <li>
+                            <span><#if !clientScope.dynamicScopeParameter??>
+                                        ${advancedMsg(clientScope.consentScreenText)}
+                                    <#else>
+                                        ${advancedMsg(clientScope.consentScreenText)}: <b>${clientScope.dynamicScopeParameter}</b>
+                                </#if>
+                            </span>
+                        </li>
+                    </#list>
+                </#if>
+            </ul>
+            <#if client.attributes.policyUri?? || client.attributes.tosUri??>
+                <h3>
+                    <#if client.name?has_content>
+                        ${msg("oauthGrantInformation",advancedMsg(client.name))}
+                    <#else>
+                        ${msg("oauthGrantInformation",client.clientId)}
+                    </#if>
+                    <#if client.attributes.tosUri??>
+                        ${msg("oauthGrantReview")}
+                        <a href="${client.attributes.tosUri}" target="_blank">${msg("oauthGrantTos")}</a>
+                    </#if>
+                    <#if client.attributes.policyUri??>
+                        ${msg("oauthGrantReview")}
+                        <a href="${client.attributes.policyUri}" target="_blank">${msg("oauthGrantPolicy")}</a>
+                    </#if>
+                </h3>
+            </#if>
+
+            <form class="form-actions" action="${url.oauthAction}" method="POST">
+                <input type="hidden" name="code" value="${oauth.code}">
+                <div class="${properties.kcFormGroupClass!}">
+                    <div id="kc-form-options">
+                        <div class="${properties.kcFormOptionsWrapperClass!}">
+                        </div>
+                    </div>
+
+                    <div id="kc-form-buttons">
+                        <div class="${properties.kcFormButtonsWrapperClass!}">
+                            <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="accept" id="kc-login" type="submit" value="${msg("doYes")}"/>
+                            <input class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="cancel" id="kc-cancel" type="submit" value="${msg("doNo")}"/>
+                        </div>
+                    </div>
+                </div>
+            </form>
+            <div class="clearfix"></div>
+        </div>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-oauth2-device-verify-user-code.ftl b/themes/custom-theme-template/login/login-oauth2-device-verify-user-code.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..dfb625fe8b174dc16058c450567fad2680b550c2
--- /dev/null
+++ b/themes/custom-theme-template/login/login-oauth2-device-verify-user-code.ftl
@@ -0,0 +1,31 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("oauth2DeviceVerificationTitle")}
+    <#elseif section = "form">
+        <form id="kc-user-verify-device-user-code-form" class="${properties.kcFormClass!}" action="${url.oauth2DeviceVerificationAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="device-user-code" class="${properties.kcLabelClass!}">${msg("verifyOAuth2DeviceUserCode")}</label>
+                </div>
+
+                <div class="${properties.kcInputWrapperClass!}">
+                    <input id="device-user-code" name="device_user_code" autocomplete="off" type="text" class="${properties.kcInputClass!}" autofocus />
+                </div>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <div class="${properties.kcFormButtonsWrapperClass!}">
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}"/>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-otp.ftl b/themes/custom-theme-template/login/login-otp.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..a43778d90051652bace2b51272da75e28f8ca38f
--- /dev/null
+++ b/themes/custom-theme-template/login/login-otp.ftl
@@ -0,0 +1,58 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('totp'); section>
+    <#if section="header">
+        ${msg("doLogIn")}
+    <#elseif section="form">
+        <form id="kc-otp-login-form" class="${properties.kcFormClass!}" action="${url.loginAction}"
+            method="post">
+            <#if otpLogin.userOtpCredentials?size gt 1>
+                <div class="${properties.kcFormGroupClass!}">
+                    <div class="${properties.kcInputWrapperClass!}">
+                        <#list otpLogin.userOtpCredentials as otpCredential>
+                            <input id="kc-otp-credential-${otpCredential?index}" class="${properties.kcLoginOTPListInputClass!}" type="radio" name="selectedCredentialId" value="${otpCredential.id}" <#if otpCredential.id == otpLogin.selectedCredentialId>checked="checked"</#if>>
+                            <label for="kc-otp-credential-${otpCredential?index}" class="${properties.kcLoginOTPListClass!}" tabindex="${otpCredential?index}">
+                                <span class="${properties.kcLoginOTPListItemHeaderClass!}">
+                                    <span class="${properties.kcLoginOTPListItemIconBodyClass!}">
+                                      <i class="${properties.kcLoginOTPListItemIconClass!}" aria-hidden="true"></i>
+                                    </span>
+                                    <span class="${properties.kcLoginOTPListItemTitleClass!}">${otpCredential.userLabel}</span>
+                                </span>
+                            </label>
+                        </#list>
+                    </div>
+                </div>
+            </#if>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="otp" class="${properties.kcLabelClass!}">${msg("loginOtpOneTime")}</label>
+                </div>
+
+            <div class="${properties.kcInputWrapperClass!}">
+                <input id="otp" name="otp" autocomplete="off" type="text" class="${properties.kcInputClass!}"
+                       autofocus aria-invalid="<#if messagesPerField.existsError('totp')>true</#if>"/>
+
+                <#if messagesPerField.existsError('totp')>
+                    <span id="input-error-otp-code" class="${properties.kcInputErrorMessageClass!}"
+                          aria-live="polite">
+                        ${kcSanitize(messagesPerField.get('totp'))?no_esc}
+                    </span>
+                </#if>
+            </div>
+        </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input
+                        class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                        name="login" id="kc-login" type="submit" value="${msg("doLogIn")}" />
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-page-expired.ftl b/themes/custom-theme-template/login/login-page-expired.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..2b470e018b800c36df3c69ef9e095d736a80f89c
--- /dev/null
+++ b/themes/custom-theme-template/login/login-page-expired.ftl
@@ -0,0 +1,11 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("pageExpiredTitle")}
+    <#elseif section = "form">
+        <p id="instruction1" class="instruction">
+            ${msg("pageExpiredMsg1")} <a id="loginRestartLink" href="${url.loginRestartFlowUrl}">${msg("doClickHere")}</a> .<br/>
+            ${msg("pageExpiredMsg2")} <a id="loginContinueLink" href="${url.loginAction}">${msg("doClickHere")}</a> .
+        </p>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-password.ftl b/themes/custom-theme-template/login/login-password.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..aa984b1a9019daee8444fa5f2418dfe419c55ffa
--- /dev/null
+++ b/themes/custom-theme-template/login/login-password.ftl
@@ -0,0 +1,52 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('password'); section>
+    <#if section = "header">
+        ${msg("doLogIn")}
+    <#elseif section = "form">
+        <div id="kc-form">
+            <div id="kc-form-wrapper">
+                <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}"
+                      method="post">
+                    <div class="${properties.kcFormGroupClass!} no-bottom-margin">
+                        <hr/>
+                        <label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label>
+                        <div class="${properties.kcInputGroup!}">
+                            <input tabindex="2" id="password" class="${properties.kcInputClass!}" name="password"
+                                   type="password" autocomplete="on" autofocus
+                                   aria-invalid="<#if messagesPerField.existsError('password')>true</#if>"
+                            />
+                            <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg('showPassword')}"
+                                    aria-controls="password"  data-password-toggle
+                                    data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                    data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                                <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                            </button>
+                        </div>
+                        <#if messagesPerField.existsError('password')>
+                            <span id="input-error-password" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                ${kcSanitize(messagesPerField.get('password'))?no_esc}
+                            </span>
+                        </#if>
+                    </div>
+
+                    <div class="${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}">
+                        <div id="kc-form-options">
+                        </div>
+                        <div class="${properties.kcFormOptionsWrapperClass!}">
+                            <#if realm.resetPasswordAllowed>
+                                <span><a tabindex="5"
+                                         href="${url.loginResetCredentialsUrl}">${msg("doForgotPassword")}</a></span>
+                            </#if>
+                        </div>
+                    </div>
+
+                    <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
+                        <input tabindex="4" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="login" id="kc-login" type="submit" value="${msg("doLogIn")}"/>
+                    </div>
+                </form>
+            </div>
+        </div>
+        <script type="module" src="${url.resourcesPath}/js/passwordVisibility.js"></script>
+    </#if>
+
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-recovery-authn-code-config.ftl b/themes/custom-theme-template/login/login-recovery-authn-code-config.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..03045c5252858e1db82ba03c5ec0d8df978a16a7
--- /dev/null
+++ b/themes/custom-theme-template/login/login-recovery-authn-code-config.ftl
@@ -0,0 +1,186 @@
+<#import "template.ftl" as layout>
+<#import "password-commons.ftl" as passwordCommons>
+<@layout.registrationLayout; section>
+
+<#if section = "header">
+    ${msg("recovery-code-config-header")}
+<#elseif section = "form">
+    <!-- warning -->
+    <div class="pf-c-alert pf-m-warning pf-m-inline ${properties.kcRecoveryCodesWarning}" aria-label="Warning alert">
+        <div class="pf-c-alert__icon">
+            <i class="pficon-warning-triangle-o" aria-hidden="true"></i>
+        </div>
+        <h4 class="pf-c-alert__title">
+            <span class="pf-screen-reader">Warning alert:</span>
+            ${msg("recovery-code-config-warning-title")}
+        </h4>
+        <div class="pf-c-alert__description">
+            <p>${msg("recovery-code-config-warning-message")}</p>
+        </div>
+    </div>
+
+    <ol id="kc-recovery-codes-list" class="${properties.kcRecoveryCodesList!}">
+        <#list recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesList as code>
+            <li><span>${code?counter}:</span> ${code[0..3]}-${code[4..7]}-${code[8..]}</li>
+        </#list>
+    </ol>
+
+    <!-- actions -->
+    <div class="${properties.kcRecoveryCodesActions}">
+        <button id="printRecoveryCodes" class="pf-c-button pf-m-link" type="button">
+            <i class="pficon-print"></i> ${msg("recovery-codes-print")}
+        </button>
+        <button id="downloadRecoveryCodes" class="pf-c-button pf-m-link" type="button">
+            <i class="pficon-save"></i> ${msg("recovery-codes-download")}
+        </button>
+        <button id="copyRecoveryCodes" class="pf-c-button pf-m-link" type="button">
+            <i class="pficon-blueprint"></i> ${msg("recovery-codes-copy")}
+        </button>
+    </div>
+
+    <!-- confirmation checkbox -->
+    <div class="${properties.kcFormOptionsClass!}">
+        <input class="${properties.kcCheckInputClass}" type="checkbox" id="kcRecoveryCodesConfirmationCheck" name="kcRecoveryCodesConfirmationCheck" 
+        onchange="document.getElementById('saveRecoveryAuthnCodesBtn').disabled = !this.checked;"
+        />
+        <label for="kcRecoveryCodesConfirmationCheck">${msg("recovery-codes-confirmation-message")}</label>
+    </div>
+
+    <form action="${url.loginAction}" class="${properties.kcFormGroupClass!}" id="kc-recovery-codes-settings-form" method="post">
+        <input type="hidden" name="generatedRecoveryAuthnCodes" value="${recoveryAuthnCodesConfigBean.generatedRecoveryAuthnCodesAsString}" />
+        <input type="hidden" name="generatedAt" value="${recoveryAuthnCodesConfigBean.generatedAt?c}" />
+        <input type="hidden" id="userLabel" name="userLabel" value="${msg("recovery-codes-label-default")}" />
+        <@passwordCommons.logoutOtherSessions/>
+
+        <#if isAppInitiatedAction??>
+            <input type="submit"
+            class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}"
+            id="saveRecoveryAuthnCodesBtn" value="${msg("recovery-codes-action-complete")}"
+            disabled
+            />
+            <button type="submit"
+                class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!} ${properties.kcButtonLargeClass!}"
+                id="cancelRecoveryAuthnCodesBtn" name="cancel-aia" value="true" />${msg("recovery-codes-action-cancel")}
+            </button>
+        <#else>
+            <input type="submit"
+            class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+            id="saveRecoveryAuthnCodesBtn" value="${msg("recovery-codes-action-complete")}"
+            disabled
+            />
+        </#if>
+    </form>
+
+    <script>
+        /* copy recovery codes  */
+        function copyRecoveryCodes() {
+            var tmpTextarea = document.createElement("textarea");
+            var codes = document.getElementById("kc-recovery-codes-list").getElementsByTagName("li");
+            for (i = 0; i < codes.length; i++) {
+                tmpTextarea.value = tmpTextarea.value + codes[i].innerText + "\n";
+            }
+            document.body.appendChild(tmpTextarea);
+            tmpTextarea.select();
+            document.execCommand("copy");
+            document.body.removeChild(tmpTextarea);
+        }
+
+        var copyButton = document.getElementById("copyRecoveryCodes");
+        copyButton && copyButton.addEventListener("click", function () {
+            copyRecoveryCodes();
+        });
+
+        /* download recovery codes  */
+        function formatCurrentDateTime() {
+            var dt = new Date();
+            var options = {
+                month: 'long',
+                day: 'numeric',
+                year: 'numeric',
+                hour: 'numeric',
+                minute: 'numeric',
+                timeZoneName: 'short'
+            };
+
+            return dt.toLocaleString('en-US', options);
+        }
+
+        function parseRecoveryCodeList() {
+            var recoveryCodes = document.querySelectorAll(".kc-recovery-codes-list li");
+            var recoveryCodeList = "";
+
+            for (var i = 0; i < recoveryCodes.length; i++) {
+                var recoveryCodeLiElement = recoveryCodes[i].innerText;
+                recoveryCodeList += recoveryCodeLiElement + "\r\n";
+            }
+
+            return recoveryCodeList;
+        }
+
+        function buildDownloadContent() {
+            var recoveryCodeList = parseRecoveryCodeList();
+            var dt = new Date();
+            var options = {
+                month: 'long',
+                day: 'numeric',
+                year: 'numeric',
+                hour: 'numeric',
+                minute: 'numeric',
+                timeZoneName: 'short'
+            };
+
+            return fileBodyContent =
+                "${msg("recovery-codes-download-file-header")}\n\n" +
+                recoveryCodeList + "\n" +
+                "${msg("recovery-codes-download-file-description")}\n\n" +
+                "${msg("recovery-codes-download-file-date")} " + formatCurrentDateTime();
+        }
+
+        function setUpDownloadLinkAndDownload(filename, text) {
+            var el = document.createElement('a');
+            el.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
+            el.setAttribute('download', filename);
+            el.style.display = 'none';
+            document.body.appendChild(el);
+            el.click();
+            document.body.removeChild(el);
+        }
+
+        function downloadRecoveryCodes() {
+            setUpDownloadLinkAndDownload('kc-download-recovery-codes.txt', buildDownloadContent());
+        }
+
+        var downloadButton = document.getElementById("downloadRecoveryCodes");
+        downloadButton && downloadButton.addEventListener("click", downloadRecoveryCodes);
+
+        /* print recovery codes */
+        function buildPrintContent() {
+            var recoveryCodeListHTML = document.getElementById('kc-recovery-codes-list').innerHTML;
+            var styles =
+                `@page { size: auto;  margin-top: 0; }
+                body { width: 480px; }
+                div { list-style-type: none; font-family: monospace }
+                p:first-of-type { margin-top: 48px }`;
+
+            return printFileContent =
+                "<html><style>" + styles + "</style><body>" +
+                "<title>kc-download-recovery-codes</title>" +
+                "<p>${msg("recovery-codes-download-file-header")}</p>" +
+                "<div>" + recoveryCodeListHTML + "</div>" +
+                "<p>${msg("recovery-codes-download-file-description")}</p>" +
+                "<p>${msg("recovery-codes-download-file-date")} " + formatCurrentDateTime() + "</p>" +
+                "</body></html>";
+        }
+
+        function printRecoveryCodes() {
+            var w = window.open();
+            w.document.write(buildPrintContent());
+            w.print();
+            w.close();
+        }
+
+        var printButton = document.getElementById("printRecoveryCodes");
+        printButton && printButton.addEventListener("click", printRecoveryCodes);
+    </script>
+</#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-recovery-authn-code-input.ftl b/themes/custom-theme-template/login/login-recovery-authn-code-input.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..8d67d434c80ec0b1167ee9deece0ae6f415573d3
--- /dev/null
+++ b/themes/custom-theme-template/login/login-recovery-authn-code-input.ftl
@@ -0,0 +1,44 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('recoveryCodeInput'); section>
+
+    <#if section = "header">
+        ${msg("auth-recovery-code-header")}
+    <#elseif section = "form">
+        <form id="kc-recovery-code-login-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="recoveryCodeInput" class="${properties.kcLabelClass!}">${msg("auth-recovery-code-prompt", recoveryAuthnCodesInputBean.codeNumber?c)}</label>
+                </div>
+
+                <div class="${properties.kcInputWrapperClass!}">
+                    <input tabindex="1" id="recoveryCodeInput"
+                           name="recoveryCodeInput"
+                           aria-invalid="<#if messagesPerField.existsError('recoveryCodeInput')>true</#if>"
+                           autocomplete="off"
+                           type="text"
+                           class="${properties.kcInputClass!}"
+                           autofocus/>
+
+                    <#if messagesPerField.existsError('recoveryCodeInput')>
+                        <span id="input-error" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                            ${kcSanitize(messagesPerField.get('recoveryCodeInput'))?no_esc}
+                        </span>
+                    </#if>
+                </div>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input
+                            class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                            name="login" id="kc-login" type="submit" value="${msg("doLogIn")}" />
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-reset-otp.ftl b/themes/custom-theme-template/login/login-reset-otp.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..d8fc58098690791e74c1ebe2d753aabdfe6ff09d
--- /dev/null
+++ b/themes/custom-theme-template/login/login-reset-otp.ftl
@@ -0,0 +1,33 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('totp'); section>
+    <#if section="header">
+        ${msg("doLogIn")}
+    <#elseif section="form">
+        <form id="kc-otp-reset-form" class="${properties.kcFormClass!}" action="${url.loginAction}"
+              method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcInputWrapperClass!}">
+                    <p id="kc-otp-reset-form-description">${msg("otp-reset-description")}</p>
+
+                    <#list configuredOtpCredentials.userOtpCredentials as otpCredential>
+                        <input id="kc-otp-credential-${otpCredential?index}" class="${properties.kcLoginOTPListInputClass!}" type="radio" name="selectedCredentialId" value="${otpCredential.id}" <#if otpCredential.id == configuredOtpCredentials.selectedCredentialId>checked="checked"</#if>>
+                        <label for="kc-otp-credential-${otpCredential?index}" class="${properties.kcLoginOTPListClass!}" tabindex="${otpCredential?index}">
+                                    <span class="${properties.kcLoginOTPListItemHeaderClass!}">
+                                        <span class="${properties.kcLoginOTPListItemIconBodyClass!}">
+                                          <i class="${properties.kcLoginOTPListItemIconClass!}" aria-hidden="true"></i>
+                                        </span>
+                                        <span class="${properties.kcLoginOTPListItemTitleClass!}">${otpCredential.userLabel}</span>
+                                    </span>
+                        </label>
+                    </#list>
+
+                    <div class="${properties.kcFormGroupClass!}">
+                        <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                            <input id="kc-otp-reset-form-submit" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}"/>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-reset-password.ftl b/themes/custom-theme-template/login/login-reset-password.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..800faea1f0d4bc0a29a10d0683e5f5f020a755d2
--- /dev/null
+++ b/themes/custom-theme-template/login/login-reset-password.ftl
@@ -0,0 +1,39 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true displayMessage=!messagesPerField.existsError('username'); section>
+    <#if section = "header">
+        ${msg("emailForgotTitle")}
+    <#elseif section = "form">
+        <form id="kc-reset-password-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="username" class="${properties.kcLabelClass!}"><#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
+                </div>
+                <div class="${properties.kcInputWrapperClass!}">
+                    <input type="text" id="username" name="username" class="${properties.kcInputClass!}" autofocus value="${(auth.attemptedUsername!'')}" aria-invalid="<#if messagesPerField.existsError('username')>true</#if>"/>
+                    <#if messagesPerField.existsError('username')>
+                        <span id="input-error-username" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                    ${kcSanitize(messagesPerField.get('username'))?no_esc}
+                        </span>
+                    </#if>
+                </div>
+            </div>
+            <div class="${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                        <span><a href="${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a></span>
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}"/>
+                </div>
+            </div>
+        </form>
+    <#elseif section = "info" >
+        <#if realm.duplicateEmailsAllowed>
+            ${msg("emailInstructionUsername")}
+        <#else>
+            ${msg("emailInstruction")}
+        </#if>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-update-password.ftl b/themes/custom-theme-template/login/login-update-password.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..f6414ec9f8111c29272c31dc2cdb9a35e576e70f
--- /dev/null
+++ b/themes/custom-theme-template/login/login-update-password.ftl
@@ -0,0 +1,77 @@
+<#import "template.ftl" as layout>
+<#import "password-commons.ftl" as passwordCommons>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('password','password-confirm'); section>
+    <#if section = "header">
+        ${msg("updatePasswordTitle")}
+    <#elseif section = "form">
+        <form id="kc-passwd-update-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="password-new" class="${properties.kcLabelClass!}">${msg("passwordNew")}</label>
+                </div>
+                <div class="${properties.kcInputWrapperClass!}">
+                    <div class="${properties.kcInputGroup!}">
+                        <input type="password" id="password-new" name="password-new" class="${properties.kcInputClass!}"
+                               autofocus autocomplete="new-password"
+                               aria-invalid="<#if messagesPerField.existsError('password','password-confirm')>true</#if>"
+                        />
+                        <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg('showPassword')}"
+                                aria-controls="password-new"  data-password-toggle
+                                data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                            <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                        </button>
+                    </div>
+
+                    <#if messagesPerField.existsError('password')>
+                        <span id="input-error-password" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                            ${kcSanitize(messagesPerField.get('password'))?no_esc}
+                        </span>
+                    </#if>
+                </div>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="password-confirm" class="${properties.kcLabelClass!}">${msg("passwordConfirm")}</label>
+                </div>
+                <div class="${properties.kcInputWrapperClass!}">
+                    <div class="${properties.kcInputGroup!}">
+                        <input type="password" id="password-confirm" name="password-confirm"
+                               class="${properties.kcInputClass!}"
+                               autocomplete="new-password"
+                               aria-invalid="<#if messagesPerField.existsError('password-confirm')>true</#if>"
+                        />
+                        <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg('showPassword')}"
+                                aria-controls="password-confirm"  data-password-toggle
+                                data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                            <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                        </button>
+                    </div>
+
+                    <#if messagesPerField.existsError('password-confirm')>
+                        <span id="input-error-password-confirm" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                            ${kcSanitize(messagesPerField.get('password-confirm'))?no_esc}
+                        </span>
+                    </#if>
+
+                </div>
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <@passwordCommons.logoutOtherSessions/>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <#if isAppInitiatedAction??>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                        <button class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" type="submit" name="cancel-aia" value="true" />${msg("doCancel")}</button>
+                    <#else>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                    </#if>
+                </div>
+            </div>
+        </form>
+        <script type="module" src="${url.resourcesPath}/js/passwordVisibility.js"></script>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-update-profile.ftl b/themes/custom-theme-template/login/login-update-profile.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..e09f5c388409ccd0fbc7e5e53c6989964b8b861b
--- /dev/null
+++ b/themes/custom-theme-template/login/login-update-profile.ftl
@@ -0,0 +1,28 @@
+<#import "template.ftl" as layout>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+    <#if section = "header">
+        ${msg("loginProfileTitle")}
+    <#elseif section = "form">
+        <form id="kc-update-profile-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+
+            <@userProfileCommons.userProfileFormFields/>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <#if isAppInitiatedAction??>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                        <button class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" type="submit" name="cancel-aia" value="true" formnovalidate/>${msg("doCancel")}</button>
+                    <#else>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                    </#if>
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/login-username.ftl b/themes/custom-theme-template/login/login-username.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..02ced45a5cf55c6f10d3543a5537f7975c5e0554
--- /dev/null
+++ b/themes/custom-theme-template/login/login-username.ftl
@@ -0,0 +1,87 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('username') displayInfo=(realm.password && realm.registrationAllowed && !registrationDisabled??); section>
+    <#if section = "header">
+        ${msg("loginAccountTitle")}
+    <#elseif section = "form">
+        <div id="kc-form">
+            <div id="kc-form-wrapper">
+                <#if realm.password>
+                    <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}"
+                          method="post">
+                        <#if !usernameHidden??>
+                            <div class="${properties.kcFormGroupClass!}">
+                                <label for="username"
+                                       class="${properties.kcLabelClass!}"><#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
+
+                                <input tabindex="1" id="username"
+                                       aria-invalid="<#if messagesPerField.existsError('username')>true</#if>"
+                                       class="${properties.kcInputClass!}" name="username"
+                                       value="${(login.username!'')}"
+                                       type="text" autofocus autocomplete="off"/>
+
+                                <#if messagesPerField.existsError('username')>
+                                    <span id="input-error-username" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                        ${kcSanitize(messagesPerField.get('username'))?no_esc}
+                                    </span>
+                                </#if>
+                            </div>
+                        </#if>
+
+                        <div class="${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}">
+                            <div id="kc-form-options">
+                                <#if realm.rememberMe && !usernameHidden??>
+                                    <div class="checkbox">
+                                        <label>
+                                            <#if login.rememberMe??>
+                                                <input tabindex="3" id="rememberMe" name="rememberMe" type="checkbox"
+                                                       checked> ${msg("rememberMe")}
+                                            <#else>
+                                                <input tabindex="3" id="rememberMe" name="rememberMe"
+                                                       type="checkbox"> ${msg("rememberMe")}
+                                            </#if>
+                                        </label>
+                                    </div>
+                                </#if>
+                            </div>
+                        </div>
+
+                        <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
+                            <input tabindex="4"
+                                   class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                                   name="login" id="kc-login" type="submit" value="${msg("doLogIn")}"/>
+                        </div>
+                    </form>
+                </#if>
+            </div>
+        </div>
+
+    <#elseif section = "info" >
+        <#if realm.password && realm.registrationAllowed && !registrationDisabled??>
+            <div id="kc-registration">
+                <span>${msg("noAccount")} <a tabindex="6" href="${url.registrationUrl}">${msg("doRegister")}</a></span>
+            </div>
+        </#if>
+    <#elseif section = "socialProviders" >
+        <#if realm.password && social.providers??>
+            <div id="kc-social-providers" class="${properties.kcFormSocialAccountSectionClass!}">
+                <hr/>
+                <h4>${msg("identity-provider-login-label")}</h4>
+
+                <ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
+                    <#list social.providers as p>
+                        <a id="social-${p.alias}" class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
+                                type="button" href="${p.loginUrl}">
+                            <#if p.iconClasses?has_content>
+                                <i class="${properties.kcCommonLogoIdP!} ${p.iconClasses!}" aria-hidden="true"></i>
+                                <span class="${properties.kcFormSocialAccountNameClass!} kc-social-icon-text">${p.displayName!}</span>
+                            <#else>
+                                <span class="${properties.kcFormSocialAccountNameClass!}">${p.displayName!}</span>
+                            </#if>
+                        </a>
+                    </#list>
+                </ul>
+            </div>
+        </#if>
+    </#if>
+
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-verify-email.ftl b/themes/custom-theme-template/login/login-verify-email.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..b47d8ca8d5c34575f752af38cae615e409785b86
--- /dev/null
+++ b/themes/custom-theme-template/login/login-verify-email.ftl
@@ -0,0 +1,14 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=true; section>
+    <#if section = "header">
+        ${msg("emailVerifyTitle")}
+    <#elseif section = "form">
+        <p class="instruction">${msg("emailVerifyInstruction1",user.email)}</p> 
+    <#elseif section = "info">
+        <p class="instruction">
+            ${msg("emailVerifyInstruction2")}
+            <br/>
+            <a href="${url.loginAction}">${msg("doClickHere")}</a> ${msg("emailVerifyInstruction3")}
+        </p>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login-x509-info.ftl b/themes/custom-theme-template/login/login-x509-info.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..0228b063386f47b2100a4c510a87681692512613
--- /dev/null
+++ b/themes/custom-theme-template/login/login-x509-info.ftl
@@ -0,0 +1,55 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("doLogIn")}
+    <#elseif section = "form">
+
+        <form id="kc-x509-login-info" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+
+                <div class="${properties.kcLabelWrapperClass!}">
+                    <label for="certificate_subjectDN" class="${properties.kcLabelClass!}">${msg("clientCertificate")}</label>
+                </div>
+                <#if x509.formData.subjectDN??>
+                    <div class="${properties.kcLabelWrapperClass!}">
+                         <label id="certificate_subjectDN" class="${properties.kcLabelClass!}">${(x509.formData.subjectDN!"")}</label>
+                    </div>
+                <#else>
+                    <div class="${properties.kcLabelWrapperClass!}">
+                        <label id="certificate_subjectDN" class="${properties.kcLabelClass!}">${msg("noCertificate")}</label>
+                    </div>
+                </#if>
+           </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+
+                    <#if x509.formData.isUserEnabled??>
+                          <div class="${properties.kcLabelWrapperClass!}">
+                             <label for="username" class="${properties.kcLabelClass!}">${msg("doX509Login")}</label>
+                          </div>
+                          <div class="${properties.kcLabelWrapperClass!}">
+                             <label id="username" class="${properties.kcLabelClass!}">${(x509.formData.username!'')}</label>
+                         </div>
+                    </#if>
+
+            </div>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <div class="${properties.kcFormButtonsWrapperClass!}">
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="login" id="kc-login" type="submit" value="${msg("doContinue")}"/>
+                        <#if x509.formData.isUserEnabled??>
+                            <input class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="cancel" id="kc-cancel" type="submit" value="${msg("doIgnore")}"/>
+                        </#if>
+                    </div>
+                </div>
+            </div>
+        </form>
+    </#if>
+
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/login.ftl b/themes/custom-theme-template/login/login.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..d6008e0e4be4ba59cc758ccfe756a4ff71ccc940
--- /dev/null
+++ b/themes/custom-theme-template/login/login.ftl
@@ -0,0 +1,115 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('username','password') displayInfo=realm.password && realm.registrationAllowed && !registrationDisabled??; section>
+    <#if section = "header">
+        ${msg("loginAccountTitle")}
+    <#elseif section = "form">
+        <div id="kc-form">
+          <div id="kc-form-wrapper">
+            <#if realm.password>
+                <form id="kc-form-login" onsubmit="login.disabled = true; return true;" action="${url.loginAction}" method="post">
+                    <#if !usernameHidden??>
+                        <div class="${properties.kcFormGroupClass!}">
+                            <label for="username" class="${properties.kcLabelClass!}"><#if !realm.loginWithEmailAllowed>${msg("username")}<#elseif !realm.registrationEmailAsUsername>${msg("usernameOrEmail")}<#else>${msg("email")}</#if></label>
+
+                            <input tabindex="2" id="username" class="${properties.kcInputClass!}" name="username" value="${(login.username!'')}"  type="text" autofocus autocomplete="username"
+                                   aria-invalid="<#if messagesPerField.existsError('username','password')>true</#if>"
+                            />
+
+                            <#if messagesPerField.existsError('username','password')>
+                                <span id="input-error" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                        ${kcSanitize(messagesPerField.getFirstError('username','password'))?no_esc}
+                                </span>
+                            </#if>
+
+                        </div>
+                    </#if>
+
+                    <div class="${properties.kcFormGroupClass!}">
+                        <label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label>
+
+                        <div class="${properties.kcInputGroup!}">
+                            <input tabindex="3" id="password" class="${properties.kcInputClass!}" name="password" type="password" autocomplete="current-password"
+                                   aria-invalid="<#if messagesPerField.existsError('username','password')>true</#if>"
+                            />
+                            <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg("showPassword")}"
+                                    aria-controls="password" data-password-toggle tabindex="4"
+                                    data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                    data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                                <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                            </button>
+                        </div>
+
+                        <#if usernameHidden?? && messagesPerField.existsError('username','password')>
+                            <span id="input-error" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                    ${kcSanitize(messagesPerField.getFirstError('username','password'))?no_esc}
+                            </span>
+                        </#if>
+
+                    </div>
+
+                    <div class="${properties.kcFormGroupClass!} ${properties.kcFormSettingClass!}">
+                        <div id="kc-form-options">
+                            <#if realm.rememberMe && !usernameHidden??>
+                                <div class="checkbox">
+                                    <label>
+                                        <#if login.rememberMe??>
+                                            <input tabindex="5" id="rememberMe" name="rememberMe" type="checkbox" checked> ${msg("rememberMe")}
+                                        <#else>
+                                            <input tabindex="5" id="rememberMe" name="rememberMe" type="checkbox"> ${msg("rememberMe")}
+                                        </#if>
+                                    </label>
+                                </div>
+                            </#if>
+                            </div>
+                            <div class="${properties.kcFormOptionsWrapperClass!}">
+                                <#if realm.resetPasswordAllowed>
+                                    <span><a tabindex="6" href="${url.loginResetCredentialsUrl}">${msg("doForgotPassword")}</a></span>
+                                </#if>
+                            </div>
+
+                      </div>
+
+                      <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
+                          <input type="hidden" id="id-hidden-input" name="credentialId" <#if auth.selectedCredential?has_content>value="${auth.selectedCredential}"</#if>/>
+                          <input tabindex="7" class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" name="login" id="kc-login" type="submit" value="${msg("doLogIn")}"/>
+                      </div>
+                </form>
+            </#if>
+            </div>
+        </div>
+        <script type="module" src="${url.resourcesPath}/js/passwordVisibility.js"></script>
+    <#elseif section = "info" >
+        <#if realm.password && realm.registrationAllowed && !registrationDisabled??>
+            <div id="kc-registration-container">
+                <div id="kc-registration">
+                    <span>${msg("noAccount")} <a tabindex="8"
+                                                 href="${url.registrationUrl}">${msg("doRegister")}</a></span>
+                </div>
+            </div>
+        </#if>
+    <#elseif section = "socialProviders" >
+        <#if realm.password && social.providers??>
+            <div id="kc-social-providers" class="${properties.kcFormSocialAccountSectionClass!}">
+                <hr/>
+                <h2>${msg("identity-provider-login-label")}</h2>
+
+                <ul class="${properties.kcFormSocialAccountListClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountListGridClass!}</#if>">
+                    <#list social.providers as p>
+                        <li>
+                            <a id="social-${p.alias}" class="${properties.kcFormSocialAccountListButtonClass!} <#if social.providers?size gt 3>${properties.kcFormSocialAccountGridItem!}</#if>"
+                                    type="button" href="${p.loginUrl}">
+                                <#if p.iconClasses?has_content>
+                                    <i class="${properties.kcCommonLogoIdP!} ${p.iconClasses!}" aria-hidden="true"></i>
+                                    <span class="${properties.kcFormSocialAccountNameClass!} kc-social-icon-text">${p.displayName!}</span>
+                                <#else>
+                                    <span class="${properties.kcFormSocialAccountNameClass!}">${p.displayName!}</span>
+                                </#if>
+                            </a>
+                        </li>
+                    </#list>
+                </ul>
+            </div>
+        </#if>
+    </#if>
+
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/logout-confirm.ftl b/themes/custom-theme-template/login/logout-confirm.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..6c0b4e97b68a70bbe9eaef7665cf3756b1bf0331
--- /dev/null
+++ b/themes/custom-theme-template/login/logout-confirm.ftl
@@ -0,0 +1,38 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("logoutConfirmTitle")}
+    <#elseif section = "form">
+        <div id="kc-logout-confirm" class="content-area">
+            <p class="instruction">${msg("logoutConfirmHeader")}</p>
+
+            <form class="form-actions" action="${url.logoutConfirmAction}" method="POST">
+                <input type="hidden" name="session_code" value="${logoutConfirm.code}">
+                <div class="${properties.kcFormGroupClass!}">
+                    <div id="kc-form-options">
+                        <div class="${properties.kcFormOptionsWrapperClass!}">
+                        </div>
+                    </div>
+
+                    <div id="kc-form-buttons" class="${properties.kcFormGroupClass!}">
+                        <input tabindex="4"
+                               class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                               name="confirmLogout" id="kc-logout" type="submit" value="${msg("doLogout")}"/>
+                    </div>
+
+                </div>
+            </form>
+
+            <div id="kc-info-message">
+                <#if logoutConfirm.skipLink>
+                <#else>
+                    <#if (client.baseUrl)?has_content>
+                        <p><a href="${client.baseUrl}">${kcSanitize(msg("backToApplication"))?no_esc}</a></p>
+                    </#if>
+                </#if>
+            </div>
+
+            <div class="clearfix"></div>
+        </div>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/messages/messages_ar.properties b/themes/custom-theme-template/login/messages/messages_ar.properties
new file mode 100644
index 0000000000000000000000000000000000000000..bf328ca4f992fbc02d41d0e56aa6d31ae7eb47b7
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_ar.properties
@@ -0,0 +1,497 @@
+doLogIn=تسجيل دخول
+doRegister=تسجيل جديد
+doRegisterSecurityKey=تسجيل جديد
+doCancel=إلغاء
+doSubmit=إرسال
+doBack=رجوع
+doYes=نعم
+doNo=لا
+doContinue=استمرار
+doIgnore=تجاهل
+doAccept=موافقة
+doDecline=رفض
+doForgotPassword=نسيت كلمة المرور؟
+doClickHere=انقر هنا
+doImpersonate=انتحال شخصية
+doTryAgain=المحاولة مرة أخرى
+doTryAnotherWay=المجاولة بطريقة أخرى
+doConfirmDelete=تأكيد الحذف
+errorDeletingAccount=حدث خطأ أثناء حذف الحساب
+deletingAccountForbidden=ليس لديك الصلاحية الكافية لحذف حسابك، قم بالتواصل مع مسؤول النظام.
+kerberosNotConfigured=لم يتم تهيئة البروتوكول Kerberos
+kerberosNotConfiguredTitle=لم يتم تهيئة البروتوكول Kerberos
+bypassKerberosDetail=إما أنك لم تقم بتسجيل الدخول بواسطة البروتوكول Kerberos أو أن متصفحك لم يتم إعداده لتسجيل الدخول بواسطة البروتوكول Kerberos. الرجاء النقر على زر استمرار لتسجيل الدخول من خلال وسائل أخرى
+kerberosNotSetUp=لم يتم تهيئة البروتوكول Kerberos. لا يمكنك تسجيل الدخول.
+registerTitle=تسجيل
+loginAccountTitle=تسجيل الدخول إلى حسابك
+loginTitle=تسجيل الدخول إلى {0}
+loginTitleHtml={0}
+impersonateTitle={0} انتحال شخصية المستخدم
+impersonateTitleHtml=<strong>{0}</strong> انتحال شخصية المستخدم
+realmChoice=المنظومة
+unknownUser=مستخدم غير معروف
+loginTotpTitle=إعداد تطبيق هاتف مصادق
+loginProfileTitle=تحديث معلومات الحساب
+loginIdpReviewProfileTitle=تحديث معلومات الحساب
+loginTimeout=انتهت مهلة محاولة تسجيل الدخول. سيتم البدء في عملية تسجيل الدخول من جديد.
+reauthenticate=يرجى إعادة المصادقة للمتابعة
+oauthGrantTitle=منح صلاحية الوصول إلى {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=تأكد من أنك تثق في {0} من خلال معرفة كيف سيتعامل {0} مع بياناتك.
+oauthGrantReview=يمكنك مراجعة 
+oauthGrantTos=بنود الخدمة.
+oauthGrantPolicy=سياسة الخصوصية.
+errorTitle=نعتذر...
+errorTitleHtml=<strong>نعتذر</strong> ...
+emailVerifyTitle=التحقق من البريد الإلكتروني
+emailForgotTitle=نسيت كلمة المرور؟
+updateEmailTitle=تحديث البريد الإلكتروني
+emailUpdateConfirmationSentTitle=تم إرسال رسالة التحقق عبر البريد الإلكتروني
+emailUpdateConfirmationSent=تم إرسال رسالة التحقق عبر البريد الإلكتروني إلى {0}. يجب عليك اتباع التعليمات لإكمال تحديث البريد الإلكتروني.
+emailUpdatedTitle=تم تحديث البريد الإلكتروني
+emailUpdated=تم تحديث البريد الإلكتروني الخاص بالحساب إلى {0}.
+updatePasswordTitle=تم تحديث كلمة المرور
+codeSuccessTitle=رمز النجاح
+codeErrorTitle=رمز الخطأ\: {0}
+displayUnsupported=نوع العرض المطلوب غير مدعوم
+browserRequired=المتصفح مطلوب لعملية تسجيل الدخول
+browserContinue=المتصفح مطلوب لإكمال عملية تسجيل الدخول
+browserContinuePrompt=فتح المتصفح لإكمال عملية تسجيل الدخول؟ [ن/ل]:
+browserContinueAnswer=ن
+
+# Transports
+usb=منفذ USB
+nfc=قارئ بطاقة NFC
+bluetooth=بلوتوث
+internal=داخلي
+unknown=غير معروف
+
+termsTitle=الشروط والأحكام
+termsText=<p>يجب تحديد الشروط والأحكام</p>
+termsPlainText=يجب تحديد الشروط والأحكام.
+termsAcceptanceRequired=يجب الموافقة على الشروط والأحكام.
+acceptTerms=أوافق على الشروط والأحكام
+
+recaptchaFailed=فشل في اختبار Recaptcha
+recaptchaNotConfigured=مطلوب اختبار Recaptcha، ولكن لم يتم تكوينه
+consentDenied=تم رفض الموافقة.
+
+noAccount=مستخدم جديد؟
+username=اسم المستخدم
+usernameOrEmail=اسم المستخدم أو البريد الإلكتروني
+firstName=الاسم الأول
+givenName=الاسم الأول
+fullName=الاسم الكامل
+lastName=الاسم الأخير
+familyName=اسم العائلة
+email=البريد الإلكتروني
+password=كلمة المرور
+passwordConfirm=تأكيد كلمة المرور
+passwordNew=كلمة مرور جديدة
+passwordNewConfirm=تأكيد كلمة المرور الجديدة
+hidePassword=إخفاء كلمة المرور
+showPassword=إظهار كلمة المرور
+rememberMe=تذكرني
+authenticatorCode=رمز لمرة واحدة
+address=العنوان
+street=الشارع
+locality=المدينة
+region=الولاية أو المنطقة
+postal_code=الرمز البريدي
+country=الدولة
+emailVerified=تم التحقق من البريد الإلكتروني
+website=الموقع الإلكتروني
+phoneNumber=رقم الهاتف
+phoneNumberVerified=تم التحقق من رقم الهاتف
+gender=الجنس
+birthday=تاريخ الميلاد
+zoneinfo=التوقيت
+gssDelegationCredential=تفويض الاعتماد GSS
+logoutOtherSessions=تسجيل الخروج من الأجهزة الأخرى
+
+profileScopeConsentText=ملف تعريفي للمستخدم
+emailScopeConsentText=البريد الإلكتروني
+addressScopeConsentText=العنوان
+phoneScopeConsentText=رقم الهاتف
+offlineAccessScopeConsentText=الوصول دون اتصال
+samlRoleListScopeConsentText=الأدوار الخاصة بي
+rolesScopeConsentText=أدوار المستخدم
+
+restartLoginTooltip=إعادة تسجيل الدخول
+
+loginTotpIntro=تحتاج إلى إعداد مولّد كلمة مرور لمرة واحدة للوصول إلى هذا الحساب
+loginTotpStep1=قم بتثبيت إحدى التطبيقات التالية على هاتفك المتنقل:
+loginTotpStep2=افتح التطبيق ثم امسح رمز الاستجابة السريعة:
+loginTotpStep3=أدخل رمز التحقق ذات الاستخدام الواحد والصادر من التطبيق ثم انقر على زر الحفظ لإتمام الإعداد.
+loginTotpStep3DeviceName=ضع اسمًا للجهاز حتى يسهل عليك إدارة أجهزة المصادقة.
+loginTotpManualStep2=افتح التطبيق ثم أدخل المفتاح:
+loginTotpManualStep3=استخدم قيم التكوين التالية إذا سمح التطبيق بتعيينها:
+loginTotpUnableToScan=غير قادر على المسح؟
+loginTotpScanBarcode=مسح رمز الاستجابة السريعة؟
+loginCredential=بيانات الدخول
+loginOtpOneTime=رمز لمرة واحدة
+loginTotpType=النوع
+loginTotpAlgorithm=الخوارزمية
+loginTotpDigits=عدد الخانات
+loginTotpInterval=المدة الزمنية
+loginTotpCounter=العداد
+loginTotpDeviceName=اسم الجهاز
+
+loginTotp.totp=على أساس الوقت
+loginTotp.hotp=على أساس العداد
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=حدد طريقة تسجيل الدخول
+
+oauthGrantRequest=هل تود منح صلاحية الوصول هذه؟
+inResource=في
+
+oauth2DeviceVerificationTitle=تسجيل الدخول على الأجهزة
+verifyOAuth2DeviceUserCode=أدخل الرمز الظاهر على جهازك ثم انقر على زر الإرسال
+oauth2DeviceInvalidUserCodeMessage=رمز غير صالح، يرجى المحاولة مرة أخرى.
+oauth2DeviceExpiredUserCodeMessage=انتهت صلاحية الرمز. يرجى العودة إلى جهازك ثم محاولة الاتصال مرة أخرى.
+oauth2DeviceVerificationCompleteHeader=تم تسجيل الدخول على الجهاز بنجاح
+oauth2DeviceVerificationCompleteMessage=يمكنك إغلاق نافذة المتصفح هذه والعودة إلى جهازك.
+oauth2DeviceVerificationFailedHeader=فشل في تسجيل الدخول على الجهاز
+oauth2DeviceVerificationFailedMessage=يمكنك إغلاق نافذة المتصفح هذه والعودة إلى جهازك ومحاولة الاتصال مرة أخرى.
+oauth2DeviceConsentDeniedMessage=تم رفض الموافقة على الاتصال بالجهاز.
+oauth2DeviceAuthorizationGrantDisabledMessage=لا يُسمح للعميل ببدء الإجراء OAuth 2.0 Device Authorization Grant، حيث أنه معطل.
+
+emailVerifyInstruction1=تم إرسال بريد إلكتروني يحتوي على إرشادات للتحقق من عنوان بريدك الإلكتروني إلى عنوانك {0}.
+emailVerifyInstruction2=ألم تستلم رمز التحقق على بريدك الإلكتروني؟
+emailVerifyInstruction3=لإعادة إرسال البريد الإلكتروني.
+
+emailLinkIdpTitle=ربط {0}
+emailLinkIdp1=تم إرسال رسالة بريد إلكتروني بها إرشادات لربط الحساب {0} ({1}) بالحساب {2} الخاص بك.
+emailLinkIdp2=ألم تستلم رمز التحقق على بريدك الإلكتروني؟
+emailLinkIdp3=لإعادة إرسال البريد الإلكتروني.
+emailLinkIdp4=إذا كنت قد تحققت بالفعل من البريد الإلكتروني في متصفح مختلف
+emailLinkIdp5=للاستمرار.
+
+backToLogin=&raquo; العودة إلى تسجيل الدخول
+
+emailInstruction=أدخل اسم المستخدم أو عنوان البريد الإلكتروني الخاص بك وسنرسل لك تعليمات حول كيفية إنشاء كلمة مرور جديدة.
+emailInstructionUsername=أدخل اسم المستخدم الخاص بك وسنرسل لك تعليمات حول كيفية إنشاء كلمة مرور جديدة.
+
+copyCodeInstruction=يرجى نسخ هذا الرمز ولصقه في التطبيق الخاص بك:
+
+pageExpiredTitle=انتهت صلاحية الصفحة
+pageExpiredMsg1=لإعادة عملية تسجيل الدخول
+pageExpiredMsg2=لمواصلة عملية تسجيل الدخول
+
+personalInfo=البيانات الشخصية:
+role_admin=مسؤول
+role_realm-admin=مسؤول منظومة
+role_create-realm=إنشاء منظومة
+role_create-client=إنشاء عميل
+role_view-realm=عرض المنظومة
+role_view-users=عرض المستخدمين
+role_view-applications=عرض التطبيقات
+role_view-clients=عرض العملاء
+role_view-events=عرض الأحداث
+role_view-identity-providers=عرض مزودي الحسابات
+role_manage-realm=إدارة المنظومة
+role_manage-users=إدارة المستخدمين
+role_manage-applications=إدارة التطبيقات
+role_manage-identity-providers=إدارة مزودي الحسابات
+role_manage-clients=إدارة العملاء
+role_manage-events=إدارة الأحداث
+role_view-profile=عرض الملف الشخصي
+role_manage-account=إدارة الحساب
+role_manage-account-links=إدارة ارتباطات الحساب
+role_read-token=قراءة الرمز
+role_offline-access=الوصول دون اتصال
+client_account=الحساب
+client_account-console=لوحة التحكم بالحساب
+client_security-admin-console=لوحة التحكم بأمان المسؤول
+client_admin-cli=واجهة سطر الأوامر للمسؤول
+client_realm-management=إدارة المنظومة
+client_broker=وسيط
+
+requiredFields=الحقول المطلوبة
+
+invalidUserMessage=اسم المستخدم أو كلمة مرور غير صالحة.
+invalidUsernameMessage=اسم المستخدم غير صالح.
+invalidUsernameOrEmailMessage=اسم المستخدم أو البريد الإلكتروني غير صالح.
+invalidPasswordMessage=كلمة المرور غير صالحة.
+invalidEmailMessage=البريد الإلكتروني غير صالح.
+accountDisabledMessage=الحساب معطل، تواصل مع مسؤول النظام.
+accountTemporarilyDisabledMessage=الحساب معطل مؤقتًا، تواصل مع مسؤول النظام أو حاول مرة أخرى لاحقًا.
+expiredCodeMessage=نفذ الوقت المسموح للدخول. الرجاء تسجيل الدخول مرة أخرى.
+expiredActionMessage=انتهى الإجراء. الرجاء الاستمرار في تسجيل الدخول الآن.
+expiredActionTokenNoSessionMessage=انتهى الإجراء.
+expiredActionTokenSessionExistsMessage=انتهى الإجراء. يرجى البدء مرة أخرى.
+sessionLimitExceeded=هناك جلسات كثيرة جدًا
+
+missingFirstNameMessage=الرجاء تحديد الاسم الأول.
+missingLastNameMessage=الرجاء تحديد الاسم الأخير.
+missingEmailMessage=الرجاء تحديد البريد الإلكتروني.
+missingUsernameMessage=الرجاء تحديد اسم المستخدم.
+missingPasswordMessage=الرجاء تحديد كلمة المرور.
+missingTotpMessage=الرجاء تحديد رمز التحقق.
+missingTotpDeviceNameMessage=الرجاء تحديد اسم الجهاز.
+notMatchPasswordMessage=كلمات المرور غير متطابقة.
+
+error-invalid-value=قيمة غير صالحة.
+error-invalid-blank=يرجى تحديد قيمة.
+error-empty=يرجى تحديد قيمة.
+error-invalid-length=الطول يجب أن يكون بين {1} و {2}.
+error-invalid-length-too-short=الطول يجب ألا يقل عن {1}.
+error-invalid-length-too-long=الطول يجب ألا يزيد عن {2}.
+error-invalid-email=بريد إلكتروني غير صالح.
+error-invalid-number=رقم غير صالح.
+error-number-out-of-range=الرقم يجب أن يكون بين {1} و {2}.
+error-number-out-of-range-too-small=الرقم يجب ألا تقل قيمته عن {1}.
+error-number-out-of-range-too-big=الرقم يجب ألا تزيد قيمته عن {2}.
+error-pattern-no-match=قيمة غير صالحة.
+error-invalid-uri=عنوان موقع غير صالح.
+error-invalid-uri-scheme=بادئة عنوان موقع غير صالحة.
+error-invalid-uri-fragment=ملحق عنوان موقع غير صالح.
+error-user-attribute-required=يرجى تحديد هذا الحقل.
+error-invalid-date=تاريخ غير صالح.
+error-user-attribute-read-only=هذا الحقل للقراءة فقط.
+error-username-invalid-character=القيمة تحتوي على حرف غير صالح.
+error-person-name-invalid-character=القيمة تحتوي على حرف غير صالح.
+error-reset-otp-missing-id=يرجى اختيار إعداد لخاصية رمز التحقق.
+
+invalidPasswordExistingMessage=كلمة المرور الحالية غير صالحة.
+invalidPasswordBlacklistedMessage=كلمة المرور غير صالحة: كلمة المرور في القائمة السوداء.
+invalidPasswordConfirmMessage=تأكيد كلمة المرور غير متطابق.
+invalidTotpMessage=رمز التحقق غير صالح.
+
+usernameExistsMessage=اسم المستخدم مستخدم مسبقًا.
+emailExistsMessage=البريد الإلكتروني مستخدم مسبقًا.
+
+federatedIdentityExistsMessage=المستخدم صاحب ({0}: {1}) موجود مسبقًا. الرجاء تسجيل الدخول إلى صفحة إدارة الحساب لربط الحساب.
+federatedIdentityUnavailableMessage=المستخدم {0} المصادق عليه بواسطة مزود الحسابات {1} غير موجود. الرجاء التواصل مع مسؤول النظام.
+federatedIdentityUnmatchedEssentialClaimMessage=رمز المصادقة للتعريف الذي تم إصداره من مزود الحسابات لا يتطابق مع القيم التي إعدادها مسبقًا. الرجاء التواصل مع مسؤول النظام.
+
+confirmLinkIdpTitle=الحساب موجود مسبقًا
+federatedIdentityConfirmLinkMessage=المستخدم صاحب ({0}: {1}) موجود مسبقًا. كيف تريد الاستمرار؟
+federatedIdentityConfirmReauthenticateMessage=المصادقة لربط حسابك بـ {0}
+nestedFirstBrokerFlowMessage=لم يتم ربط مستخدم {0} ({1}) بأي مستخدم معروف.
+confirmLinkIdpReviewProfile=مراجعة الملف الشخصي
+confirmLinkIdpContinue=إضافة إلى الحساب الحالي
+
+configureTotpMessage=تحتاج إلى إعداد المصادقة بالهاتف الذكي لتفعيل حسابك.
+configureBackupCodesMessage=تحتاج إلى إعداد رموز المصادقة الاحتياطية لتفعيل حسابك.
+updateProfileMessage=تحتاج إلى تحديث الملف الشخصي لتفعيل حسابك.
+updatePasswordMessage=تحتاج إلى تحديث كلمة المرور لتفعيل حسابك.
+updateEmailMessage=تحتاج إلى تحديث البريد الإلكتروني لتفعيل حسابك.
+resetPasswordMessage=تحتاج إلى تحديث كلمة المرور الخاصة بك.
+verifyEmailMessage=تحتاج إلى التحقق من البريد الإلكتروني لتفعيل حسابك.
+linkIdpMessage=تحتاج إلى التحقق من البريد الإلكتروني لربط حسابك بـ {0}.
+
+emailSentMessage=من المفترض أن تتلقى بريدًا إلكترونيًا عما قريب يحتوي على مزيد من الإرشادات.
+emailSendErrorMessage=فشل في إرسال البريد الإلكتروني، يرجى المحاولة مرة أخرى في وقت لاحق.
+
+accountUpdatedMessage=تم تحديث الحساب الخاص بك.
+accountPasswordUpdatedMessage=تم تحديث كلمة المرور الخاصة بك.
+
+delegationCompleteHeader=تم تسجيل الدخول بنجاح
+delegationCompleteMessage=يمكنك إغلاق نافذة المتصفح هذه والعودة إلى تطبيق وحدة التحكم الخاصة بك.
+delegationFailedHeader=فشل في تسجيل الدخول
+delegationFailedMessage=يمكنك إغلاق نافذة المتصفح هذه والعودة إلى تطبيق وحدة التحكم ومحاولة تسجيل الدخول مرة أخرى.
+
+noAccessMessage=لا وصول
+
+invalidPasswordMinLengthMessage=كلمة المرور غير صالحة: الحد الأدنى للطول {0}.
+invalidPasswordMaxLengthMessage=كلمة المرور غير صالحة: الحد الأقصى للطول {0}.
+invalidPasswordMinDigitsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} أرقام على الأقل.
+invalidPasswordMinLowerCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف صغيرة على الأقل.
+invalidPasswordMinUpperCaseCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} حروف كبيرة على الأقل.
+invalidPasswordMinSpecialCharsMessage=كلمة المرور غير صالحة: يجب أن تحتوي على {0} رموز على الأقل.
+invalidPasswordNotUsernameMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لاسم المستخدم.
+invalidPasswordNotEmailMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للبريد الإلكتروني.
+invalidPasswordRegexPatternMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة للأنماط المحددة.
+invalidPasswordHistoryMessage=كلمة المرور غير صالحة: يجب ألا تكون مطابقة لأي من كلمات المرور الـ {0} الأخيرة.
+invalidPasswordGenericMessage=كلمة المرور غير صالحة: كلمة المرور الجديدة لا تتطابق مع سياسات كلمة المرور.
+
+failedToProcessResponseMessage=فشل في معالجة الاستجابة
+httpsRequiredMessage=البروتوكول HTTPS مطلوب
+realmNotEnabledMessage=المنظومة غير مفعلة
+invalidRequestMessage=طلب غير صالح
+successLogout=لقد قمت بتسجيل الخروج
+failedLogout=فشل في تسجيل الخروج
+unknownLoginRequesterMessage=طالب تسجيل الدخول غير معروف
+loginRequesterNotEnabledMessage=طالب تسجيل الدخول غير مفعل
+bearerOnlyMessage=لا يسمح للتطبيقات Bearer-only ببدء تسجيل الدخول باستخدام المتصفح
+standardFlowDisabledMessage=لا يسمح للعميل ببدء تسجيل الدخول باستخدام المتصفح مع قيمة response_type المعطاة. تم تعطيل الإجراء القياسي standard flow لهذا العميل.
+implicitFlowDisabledMessage=لا يسمح للعميل ببدء تسجيل الدخول باستخدام المتصفح مع قيمة response_type المعطاة. تم تعطيل الإجراء الضمني implicit flow لهذا العميل.
+invalidRedirectUriMessage=رابط إعادة التوجيه غير صالح
+unsupportedNameIdFormatMessage=صيغة غير مدعومة للقيمة NameID
+invalidRequesterMessage=طالب غير صالح
+registrationNotAllowedMessage=التسجيل غير مسموح به
+resetCredentialNotAllowedMessage=إعادة تعيين بيانات الدخول غير مسموح به
+
+permissionNotApprovedMessage=لم تتم الموافقة على الإذن.
+noRelayStateInResponseMessage=لا تواجد لقيمة Relay State في استجابة مزود الحسابات.
+insufficientPermissionMessage=أذونات غير كافية لربط الهويات.
+couldNotProceedWithAuthenticationRequestMessage=تعذرت متابعة طلب المصادقة لمزود الحسابات.
+couldNotObtainTokenMessage=تعذر الحصول على رمز مصادقة من مزود الحسابات.
+unexpectedErrorRetrievingTokenMessage=خطأ غير متوقع عند استرداد رمز المصادقة من مزود الحسابات.
+unexpectedErrorHandlingResponseMessage=خطأ غير متوقع عند التعامل مع الاستجابة من مزود الحسابات.
+identityProviderAuthenticationFailedMessage=فشلت المصادقة. تعذرت المصادقة مع مزود الحسابات.
+couldNotSendAuthenticationRequestMessage=تعذر إرسال طلب المصادقة إلى مزود الحسابات.
+unexpectedErrorHandlingRequestMessage=خطأ غير متوقع عند معالجة طلب المصادقة لمزود الحسابات.
+invalidAccessCodeMessage=رمز الوصول غير صالح.
+sessionNotActiveMessage=الجلسة غير نشطة.
+invalidCodeMessage=حدث خطأ، يرجى تسجيل الدخول مرة أخرى من خلال التطبيق الخاص بك.
+cookieNotFoundMessage=لم يتم العثور على ملف تعريف الارتباط. يرجى التأكد من تمكين ملفات تعريف الارتباط في متصفحك.
+insufficientLevelOfAuthentication=لم يتم استيفاء مستوى المصادقة المطلوب.
+identityProviderUnexpectedErrorMessage=خطأ غير متوقع عند المصادقة مع مزود الحسابات
+identityProviderMissingStateMessage=المعامل state مفقود في رد مزود الحسابات.
+identityProviderMissingCodeOrErrorMessage=المعامل code أو error مفقود في رد مزود الحسابات.
+identityProviderInvalidResponseMessage=رد غير صالح من مزود الحسابات.
+identityProviderInvalidSignatureMessage=توقيع غير صالح في رد مزود الحسابات.
+identityProviderNotFoundMessage=تعذر العثور على مزود الحسابات بالمعرف.
+identityProviderLinkSuccess=لقد نجحت في التحقق من بريدك الإلكتروني. يرجى الرجوع إلى متصفحك والمتابعة هناك في عملية تسجيل الدخول.
+staleCodeMessage=هذه الصفحة لم تعد صالحة، يرجى الرجوع إلى التطبيق الخاص بك وتسجيل الدخول مرة أخرى
+realmSupportsNoCredentialsMessage=لا تدعم المنظومة أي نوع من بيانات الدخول.
+credentialSetupRequired=لا يمكن تسجيل الدخول، مطلوب إعداد بيانات الدخول.
+identityProviderNotUniqueMessage=تدعم المنظومة عدة مزودي حسابات. تعذر تحديد مزود الحسابات الذي يجب استخدامه للمصادقة معه.
+emailVerifiedMessage=تم التحقق من عنوان البريد الإلكتروني الخاص بك.
+emailVerifiedAlreadyMessage=تم التحقق من عنوان البريد الإلكتروني الخاص بك مسبقًا.
+staleEmailVerificationLink=الرابط الذي نقرت عليه هو رابط قديم ولم يعد صالحًا. ربما تكون قد تحققت مسبقًا من بريدك الإلكتروني.
+identityProviderAlreadyLinkedMessage=الهوية الموحدة التي أرجعها {0} مرتبطة مسبقًا بمستخدم آخر.
+confirmAccountLinking=تأكيد ربط الحساب {0} من مزود الحسابات {1} مع حسابك.
+confirmEmailAddressVerification=تأكد من صحة عنوان البريد الإلكتروني {0}.
+confirmExecutionOfActions=قم بتنفيذ الإجراءات التالية
+
+backToApplication=&raquo; العودة إلى التطبيق
+missingParameterMessage=عوامل مفقودة\: {0}
+clientNotFoundMessage=العميل غير موجود.
+clientDisabledMessage=العميل معطل.
+invalidParameterMessage=عامل غير صالح\: {0}
+alreadyLoggedIn=لقد قمت بتسجيل الدخول مسبقًا.
+differentUserAuthenticated=لقد تمت مصادقتك مسبقًا كمستخدم مختلف '' {0} '' في هذه الجلسة. الرجاء تسجيل الخروج أولا.
+brokerLinkingSessionExpired=تم طلب ربط حساب الوسيط، ولكن الجلسة الحالية لم تعد صالحة.
+proceedWithAction=&laquo; انقر هنا للمتابعة
+acrNotFulfilled=لم يتم استيفاء متطلبات المصادقة
+
+requiredAction.CONFIGURE_TOTP=إعداد خاصية رمز التحقق
+requiredAction.TERMS_AND_CONDITIONS=الأحكام والشروط
+requiredAction.UPDATE_PASSWORD=تحديث كلمة المرور
+requiredAction.UPDATE_PROFILE=تحديث الملف التعريفي
+requiredAction.VERIFY_EMAIL=التحقق من البريد الإلكتروني
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=توليد رموز مصادقة الاسترداد
+requiredAction.webauthn-register-passwordless=المصادقة دون كلمة مرور باستخدام Webauthn
+
+invalidTokenRequiredActions=الإجراءات المطلوبة المدرجة في الرابط غير صالحة
+
+doX509Login=سوف يتم تسجيل دخولك كـ\:
+clientCertificate=شهادة العميل X509\:
+noCertificate=[بدون شهادة]
+
+
+pageNotFound=الصفحة غير موجودة
+internalServerError=حدث خطأ داخلي في الخادم
+
+console-username=اسم المستخدم:
+console-password=كلمة المرور:
+console-otp=كلمة مرور لمرة واحدة:
+console-new-password=كلمة المرور الجديدة:
+console-confirm-password=تأكيد كلمة المرور:
+console-update-password=مطلوب تحديث كلمة المرور الخاصة بك.
+console-verify-email=تحتاج إلى التحقق من عنوان بريدك الإلكتروني. لقد أرسلنا بريدًا إلكترونيًا إلى {0} يحتوي على رمز تحقق. الرجاء إدخال هذا الرمز في الأسفل.
+console-email-code=رمز البريد الالكتروني:
+console-accept-terms=قبول الشروط؟ [ن/ل]:
+console-accept=ن
+
+# Openshift messages
+openshift.scope.user_info=معلومات المستخدم
+openshift.scope.user_check-access=معلومات وصول المستخدم
+openshift.scope.user_full=الوصول الكامل
+openshift.scope.list-projects=قائمة المشاريع
+
+# SAML authentication
+saml.post-form.title=إعادة توجيه المصادقة
+saml.post-form.message=يتم الآن إعادة التوجيه، الرجاء الانتظار.
+saml.post-form.js-disabled=تم تعطيل جافاسكربت. نوصي بشدة لتمكينه. انقر على الزر أدناه للمتابعة. 
+saml.artifactResolutionServiceInvalidResponse=غير قادر على إيجاد المعرف artifact.
+
+#authenticators
+otp-display-name=تطبيق مصادق
+otp-help-text=أدخل رمز التحقق الصادرة من التطبيق المصادق.
+otp-reset-description=أي إعداد لخاصية رمز التحقق ترغب بإزالته؟
+password-display-name=كلمة المرور
+password-help-text=سجل الدخول باستخدام كلمة المرور.
+auth-username-form-display-name=اسم المستخدم
+auth-username-form-help-text=سجل الدخول باستخدام اسم المستخدم
+auth-username-password-form-display-name=اسم المستخدم وكلمة المرور
+auth-username-password-form-help-text=سجل الدخول باستخدام اسم المستخدم وكلمة المرور.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=رمز مصادقة الاسترداد
+auth-recovery-authn-code-form-help-text=أدخل رمز مصادقة الاسترداد من قائمة تم إنشاؤها مسبقًا.
+auth-recovery-code-info-message=أدخل رمز مصادقة الاسترداد المحدد.
+auth-recovery-code-prompt=رمز مصادقة الاسترداد #{0}
+auth-recovery-code-header=تسجيل الدخول باستخدام رمز مصادقة الاسترداد
+recovery-codes-error-invalid=رمز مصادقة الاسترداد غير صالح
+recovery-code-config-header=رموز مصادقة الاسترداد
+recovery-code-config-warning-title=لن تظهر رموز الاسترداد هذه مرة أخرى بعد مغادرة الصفحة
+recovery-code-config-warning-message=تأكد من طباعتها أو تنزيلها أو نسخها إلى مدير كلمات المرور واحتفظ بها. سيؤدي إلغاء هذا الإعداد إلى إزالة رموز مصادقة الاسترداد هذه من حسابك.
+recovery-codes-print=طباعة
+recovery-codes-download=تنزيل
+recovery-codes-copy=نسخ
+recovery-codes-copied=تم النسخ
+recovery-codes-confirmation-message=لقد قمت بحفظ هذه الرموز في مكان ما آمن
+recovery-codes-action-complete=إكمال الإعداد
+recovery-codes-action-cancel=إلغاء الإعداد
+recovery-codes-download-file-header=احتفظ برموز مصادقة الاسترداد هذه في مكان آمن.
+recovery-codes-download-file-description=رموز مصادقة الاسترداد هي رموز مرور تستخدم مرة واحدة وتسمح لك بتسجيل الدخول إلى حسابك إذا لم يكن لديك وصول إلى المصدق الخاص بك.
+recovery-codes-download-file-date=تم إنشاء هذه الرموز في
+recovery-codes-label-default=رموز مصادقة الاسترداد
+
+# WebAuthn
+webauthn-display-name=مفتاح أمان
+webauthn-help-text=استخدم مفتاح الأمان لتسجيل الدخول.
+webauthn-passwordless-display-name=مفتاح أمان
+webauthn-passwordless-help-text=استخدم مفتاح الأمان لتسجيل الدخول دون كلمة مرور.
+webauthn-login-title=تسجيل الدخول باستخدام مفتاح الأمان
+webauthn-registration-title=تسجيل مفتاح أمان
+webauthn-available-authenticators=مفاتيح الأمان المتاحة
+webauthn-unsupported-browser-text=الخاصية WebAuthn غير مدعومة في هذا المتصفح. جرب متصفح آخر أو تواصل مع مسؤول النظام.
+webauthn-doAuthenticate=تسجيل الدخول باستخدام مفتاح الأمان
+webauthn-createdAt-label=تم إنشاؤه في
+
+# WebAuthn Error
+webauthn-error-title=خطأ في مفتاح الأمان
+webauthn-error-registration=فشل في تسجيل مفتاح الأمان الخاص بك.<br/> {0}
+webauthn-error-api-get=فشلت المصادقة بواسطة مفتاح الأمان.<br/> {0}
+webauthn-error-different-user=أول مستخدم تمت مصادقته ليس هو الشخص الذي تمت مصادقته بواسطة مفتاح الأمان.
+webauthn-error-auth-verification=نتيجة مصادقة مفتاح الأمان غير صالحة.<br/> {0}
+webauthn-error-register-verification=نتيجة تسجيل مفتاح الأمان غير صالحة.<br/> {0}
+webauthn-error-user-not-found=مستخدم غير معروف تمت مصادقته بواسطة مفتاح الأمان.
+
+# Identity provider
+identity-provider-redirector=اتصل بمزود حسابات آخر
+identity-provider-login-label=أو قم بتسجيل الدخول باستخدام
+idp-email-verification-display-name=تأكيد البريد الإلكتروني
+idp-email-verification-help-text=ربط حسابك عن طريق التحقق من صحة البريد الإلكتروني الخاص بك.
+idp-username-password-form-display-name=اسم المستخدم و كلمة المرور
+idp-username-password-form-help-text=ربط حسابك عن طريق تسجيل الدخول.
+
+finalDeletionConfirmation=إذا قمت بحذف حسابك، فلا يمكن استعادته. للاحتفاظ بحسابك، انقر فوق إلغاء.
+irreversibleAction=هذا الإجراء لا رجعة فيه
+deleteAccountConfirm=تأكيد حذف الحساب
+
+deletingImplies=حذف حسابك يعني ضمناً:
+errasingData=محو جميع البيانات الخاصة بك
+loggingOutImmediately=تسجيل خروجك على الفور
+accountUnusable=أي استخدام لاحق للتطبيق لن يكون ممكناً مع هذا الحساب
+userDeletedSuccessfully=تم حذف المستخدم بنجاح
+
+access-denied=تم رفض الوصول
+access-denied-when-idp-auth=تم رفض الاتفاقية أثناء المصادقة مع {0}
+
+frontchannel-logout.title=تسجيل الخروج
+frontchannel-logout.message=أنت تقوم بتسجيل الخروج من التطبيقات التالية
+logoutConfirmTitle=تسجيل الخروج
+logoutConfirmHeader=هل تود تسجيل الخروج؟
+doLogout=تسجيل الخروج
+
+readOnlyUsernameMessage=لا يمكنك تحديث اسم المستخدم الخاص بك لأنه للقراءة فقط.
diff --git a/themes/custom-theme-template/login/messages/messages_ca.properties b/themes/custom-theme-template/login/messages/messages_ca.properties
new file mode 100644
index 0000000000000000000000000000000000000000..1a89f83ae75d23b0f6031af7544972be27fab479
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_ca.properties
@@ -0,0 +1,517 @@
+doLogIn=Inicia la sessió
+doRegister=Registreu-vos
+doRegisterSecurityKey=Registreu-vos
+doCancel=Cancel·la
+doSubmit=Envia
+doBack=Enrere
+doYes=Sí
+doNo=No
+doContinue=Continua
+doIgnore=Ignora
+doAccept=Accepta
+doDecline=Rebutja
+doForgotPassword=Heu oblidat la vostra contrasenya?
+doClickHere=Feu clic aquí
+doImpersonate=Suplanta
+doTryAgain=Torna-ho a provar
+doTryAnotherWay=Prova d''una altra manera
+doConfirmDelete=Confirma la supressió
+errorDeletingAccount=S''ha produït un error en eliminar el compte
+deletingAccountForbidden=No teniu permisos suficients per a eliminar el vostre compte, contacteu amb l''administrador.
+kerberosNotConfigured=Kerberos no configurat
+kerberosNotConfiguredTitle=Kerberos no configurat
+bypassKerberosDetail=O bé no esteu identificat mitjançant Kerberos o el vostre navegador no està configurat per a identificar-se mitjançant Kerberos. Feu clic per a identificar-vos per un altre mitjà
+kerberosNotSetUp=Kerberos no està configurat. No us podeu identificar.
+registerTitle=Registreu-vos
+loginAccountTitle=Accediu al vostre compte
+loginTitle=Inicia la sessió a {0}
+loginTitleHtml={0}
+impersonateTitle={0} Suplanta l''usuari
+impersonateTitleHtml=<strong>{0}</strong> Suplanta l''usuari
+realmChoice=Domini
+unknownUser=Usuari desconegut
+loginTotpTitle=Configuració de l''autenticador mòbil
+loginProfileTitle=Actualització de la informació del compte
+loginIdpReviewProfileTitle=Actualització de la informació del compte
+loginTimeout=S''ha excedit el temps per a realitzar una entrada. L''entrada començarà des del principi.
+reauthenticate=Torneu a identificar-vos per a continuar
+oauthGrantTitle=Concedeix l''accés a {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Assegureu-vos que confieu en {0} assabentant-vos de com {0} gestionarà les vostres dades.
+oauthGrantReview=Podeu revisar les
+oauthGrantTos=condicions del servei.
+oauthGrantPolicy=política de privacitat.
+errorTitle=Ho lamentem...
+errorTitleHtml=Ho <strong>lamentem</strong>...
+emailVerifyTitle=Verificació del correu electrònic
+emailForgotTitle=Heu oblidat la contrasenya?
+updateEmailTitle=Actualitza el correu electrònic
+emailUpdateConfirmationSentTitle=S''ha enviat un correu de confirmació
+emailUpdateConfirmationSent=S''ha enviat un correu electrònic de confirmació a {0}. Seguiu les instruccions per a completar l''actualització del correu electrònic.
+emailUpdatedTitle=S''ha actualitzat el correu electrònic
+emailUpdated=S''ha actualitzat correctament el correu electrònic del compte a {0}.
+updatePasswordTitle=Actualitza la contrasenya
+codeSuccessTitle=Codi d''èxit
+codeErrorTitle=Codi d''error\\: {0}
+displayUnsupported=El tipus de visualització demanat no és compatible
+browserRequired=Es requereix un navegador per a entrar
+browserContinue=Es requereix un navegador per a completar l''entrada
+browserContinuePrompt=Voleu obrir el navegador i continuar l''entrada? [s/n]:
+browserContinueAnswer=s
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Interna
+unknown=Desconegut
+
+termsTitle=Termes i condicions
+termsText=<p>Termes i condicions a definir</p>
+termsPlainText=Termes i condicions a definir.
+termsAcceptanceRequired=Heu d''acceptar els nostres termes i condicions.
+acceptTerms=Accepto els termes i condicions
+
+recaptchaFailed=Recaptcha invàlid
+recaptchaNotConfigured=El Recaptcha és obligatori però no està configurat
+consentDenied=Consentiment rebutjat.
+
+noAccount=Usuari nou?
+username=Usuari
+usernameOrEmail=Usuari o adreça electrònica
+firstName=Nom
+givenName=Nom de pila
+fullName=Nom complet
+lastName=Cognoms
+familyName=Cognoms
+email=Email
+password=Contrasenya
+passwordConfirm=Confirma la contrasenya
+passwordNew=Contrasenya nova
+passwordNewConfirm=Confirma la contrasenya nova
+rememberMe=Recorda''m
+authenticatorCode=Codi d''un sol ús
+address=Adreça
+street=Carrer
+locality=Ciutat o municipi
+region=Estat, província o regió
+postal_code=Codi postal
+country=País
+emailVerified=Adreça electrònica verificada
+website=Pàgina web
+phoneNumber=Número de telèfon
+phoneNumberVerified=Número de telèfon verificat
+gender=Gènere
+birthday=Natalici
+zoneinfo=Fus horari
+gssDelegationCredential=Credencial de delegació GSS
+logoutOtherSessions=Surt d''altres dispositius
+
+profileScopeConsentText=Perfil d''usuari
+emailScopeConsentText=Correu electrònic
+addressScopeConsentText=Adreça
+phoneScopeConsentText=Número de telèfon
+offlineAccessScopeConsentText=Accés fora de línia
+samlRoleListScopeConsentText=Els meus rols
+rolesScopeConsentText=Rols d''usuari
+
+restartLoginTooltip=Torna a iniciar l''entrada
+
+loginTotpIntro=Heu de configurar un generador de contrasenyes d''un sol ús per a accedir a aquest compte
+loginTotpStep1=Instal·leu una de les aplicacions següents al vostre mòbil:
+loginTotpStep2=Obriu l''aplicació i escanegeu el codi de barres:
+loginTotpStep3=Introduïu el codi d''un sol ús proveït per l''aplicació i feu clic a Envia per a finalitzar la configuració.
+loginTotpStep3DeviceName=Introduïu un nom de dispositiu per a ajudar-vos a gestionar els vostres dispositius OTP.
+loginTotpManualStep2=Obriu l''aplicació i introduïu la clau:
+loginTotpManualStep3=Utilitzeu els valors de configuració següents si l''aplicació permet establir-los:
+loginTotpUnableToScan=No podeu escanejar?
+loginTotpScanBarcode=Voleu escanejar el codi de barres?
+loginCredential=Credencial
+loginOtpOneTime=Codi d''un sol ús
+loginTotpType=Tipus
+loginTotpAlgorithm=Algoritme
+loginTotpDigits=Dígits
+loginTotpInterval=Interval
+loginTotpCounter=Comptador
+loginTotpDeviceName=Nom del dispositiu
+
+loginTotp.totp=Basat en temps
+loginTotp.hotp=Basat en comptador
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=Seleccioneu un mètode d''entrada
+
+oauthGrantRequest=Voleu permetre aquests privilegis d''accés?
+inResource=a
+
+oauth2DeviceVerificationTitle=Entrada per dispositiu
+verifyOAuth2DeviceUserCode=Introduïu el codi proveït pel vostre dispositiu i feu clic a Envia
+oauth2DeviceInvalidUserCodeMessage=El codi no és vàlid, torneu-ho a provar.
+oauth2DeviceExpiredUserCodeMessage=El codi ha caducat. Torneu al vostre dispositiu i intenteu-ho de nou.
+oauth2DeviceVerificationCompleteHeader=Inici de sessió per dispositiu correcte
+oauth2DeviceVerificationCompleteMessage=Podeu tancar aquesta finestra del navegador i tornar al vostre dispositiu.
+oauth2DeviceVerificationFailedHeader=Ha fallat l''inici de sessió per dispositiu
+oauth2DeviceVerificationFailedMessage=Podeu tancar aquesta finestra del navegador i tornar al vostre dispositiu per a tornar a connectar.
+oauth2DeviceConsentDeniedMessage=S''ha rebutjat el consentiment per a connectar al dispositiu.
+oauth2DeviceAuthorizationGrantDisabledMessage=El client no està autoritzat a iniciar una concessió d''autorització de dispositiu OAuth 2.0. El flux és inhabilitat per al client.
+
+emailVerifyInstruction1=S''ha enviat un correu electrònic a la vostra adreça de correu electrònic {0} amb instruccions per a verificar-la.
+emailVerifyInstruction2=No heu rebut un codi de verificació al vostre correu electrònic?
+emailVerifyInstruction3=per a tornar a enviar el correu electrònic.
+
+emailLinkIdpTitle=Enllaç a {0}
+emailLinkIdp1=S''ha enviat un correu electrònic amb instruccions per a enllaçar el compte {0} {1} amb el vostre compte {2}.
+emailLinkIdp2=No heu rebut un codi de verificació al vostre correu electrònic?
+emailLinkIdp3=per a tornar a enviar el correu electrònic.
+emailLinkIdp4=si ja heu verificat el correu electrònic en un altre navegador
+emailLinkIdp5=per a continuar.
+
+backToLogin=&laquo; Torna a la identificació
+
+emailInstruction=Introduïu el vostre nom d''usuari o adreça de correu electrònic i us enviarem instruccions per a establir una contrasenya nova.
+emailInstructionUsername=Introduïu el vostre nom d''usuari i us enviarem instruccions per a establir una contrasenya nova.
+
+copyCodeInstruction=Copieu i enganxeu aquest codi a la vostra aplicació:
+
+pageExpiredTitle=La pàgina ha caducat
+pageExpiredMsg1=Per a tornar a iniciar el procés d''entrada
+pageExpiredMsg2=Per a continuar el procés d''entrada
+
+personalInfo=Informació personal:
+role_admin=Administració
+role_realm-admin=Administrador del domini
+role_create-realm=Crea un domini
+role_create-client=Crea un client
+role_view-realm=Visualitza el domini
+role_view-users=Visualitza els usuaris
+role_view-applications=Visualitza les aplicacions
+role_view-clients=Visualitza els clients
+role_view-events=Visualitza els esdeveniments
+role_view-identity-providers=Visualitza els proveïdors d''identitat
+role_manage-realm=Gestiona el domini
+role_manage-users=Gestiona els usuaris
+role_manage-applications=Gestiona les aplicacions
+role_manage-identity-providers=Gestiona els proveïdors d''identitat
+role_manage-clients=Gestiona els clients
+role_manage-events=Gestiona els esdeveniments
+role_view-profile=Visualitza el perfil
+role_manage-account=Gestiona el compte
+role_manage-account-links=Gestiona els enllaços del compte
+role_read-token=Llegeix el codi d''autorització
+role_offline-access=Accés fora de línia
+client_account=Compte
+client_account-console=Consola del compte
+client_security-admin-console=Consola d''administració de seguretat
+client_admin-cli=CLI d''administració
+client_realm-management=Gestió del domini
+client_broker=Agent
+
+requiredFields=Camps requerits
+
+invalidUserMessage=El nom d''usuari o contrasenya no són vàlids.
+invalidUsernameMessage=El nom d''usuari no és vàlid.
+invalidUsernameOrEmailMessage=El nom d''usuari o correu electrònic no són vàlids.
+invalidPasswordMessage=La contrasenya no és vàlida.
+invalidEmailMessage=L''adreça de correu electrònic no és vàlida.
+accountDisabledMessage=El compte està inhabilitat, contacteu amb l''administrador.
+accountTemporarilyDisabledMessage=El compte està temporalment inhabilitat, contacteu amb l''administrador o intenteu-ho de nou més tard.
+expiredCodeMessage=S''ha esgotat el temps màxim per a la identificació. Identifiqueu-vos de nou.
+expiredActionMessage=L''acció ha caducat. Continueu ara amb l''entrada.
+expiredActionTokenNoSessionMessage=L''acció ha caducat.
+expiredActionTokenSessionExistsMessage=L''acció ha caducat. Si us plau, comenceu de nou.
+sessionLimitExceeded=Hi ha massa sessions.
+
+missingFirstNameMessage=Indiqueu el vostre nom.
+missingLastNameMessage=Indiqueu els vostres cognoms.
+missingEmailMessage=Indiqueu la vostra adreça de correu electrònic.
+missingUsernameMessage=Indiqueu el vostre nom d''usuari.
+missingPasswordMessage=Indiqueu la vostra contrasenya.
+missingTotpMessage=Indiqueu el vostre codi d''autenticació.
+missingTotpDeviceNameMessage=Indiqueu el nom del vostre dispositiu.
+notMatchPasswordMessage=Les contrasenyes no coincideixen.
+
+error-invalid-value=El valor no és vàlid.
+error-invalid-blank=Especifiqueu un valor.
+error-empty=Especifiqueu un valor.
+error-invalid-length=La llargària ha de ser d''entre {1} i {2}.
+error-invalid-length-too-short=La llargària mínima és de {1}.
+error-invalid-length-too-long=La llargària màxima és de {2}.
+error-invalid-email=L''adreça de correu electrònic no és vàlida.
+error-invalid-number=El nombre no és vàlid.
+error-number-out-of-range=El número ha de ser entre {1} i {2}.
+error-number-out-of-range-too-small=El nombre ha de tindre un valor mínim de {1}.
+error-number-out-of-range-too-big=El nombre ha de tindre un valor màxim de {2}.
+error-pattern-no-match=El valor no és vàlid.
+error-invalid-uri=L''URL no és vàlid.
+error-invalid-uri-scheme=L''esquema d''URL no és vàlid.
+error-invalid-uri-fragment=El fragment d''URL no és vàlid.
+error-user-attribute-required=Especifiqueu aquest camp.
+error-invalid-date=La data no és vàlida.
+error-user-attribute-read-only=Aquest camp és només de lectura.
+error-username-invalid-character=El valor conté un caràcter no vàlid.
+error-person-name-invalid-character=El valor conté un caràcter no vàlid.
+error-reset-otp-missing-id=Seleccioneu una configuració d''OTP.
+
+invalidPasswordExistingMessage=La contrasenya actual no és vàlida.
+invalidPasswordBlacklistedMessage=La contrasenya no és vàlida: està en una llista negra.
+invalidPasswordConfirmMessage=La confirmació de contrasenya no coincideix.
+invalidTotpMessage=El codi d''autenticació no és vàlid.
+
+usernameExistsMessage=El nom d''usuari ja existeix.
+emailExistsMessage=El correu electrònic ja existeix.
+
+federatedIdentityExistsMessage=Ja existeix un usuari amb {0} {1}. Entreu al gestor de comptes per a enllaçar el compte.
+federatedIdentityUnavailableMessage=L''usuari {0} autenticat amb el proveïdor d''identitat {1} no existeix. Contacteu amb l''administrador.
+federatedIdentityUnmatchedEssentialClaimMessage=El codi d''autorització de l''ID emès pel proveïdor d''identitat no concorda amb la declaració essencial configurada. Contacteu amb l''administrador.
+
+confirmLinkIdpTitle=El compte ja existeix
+federatedIdentityConfirmLinkMessage=Ja existeix un usuari amb {0} {1}. Com voleu continuar?
+federatedIdentityConfirmReauthenticateMessage=Identifiqueu-vos per a enllaçar el vostre compte amb {0}
+nestedFirstBrokerFlowMessage=L''usuari {0} de {1} no està enllaçat a cap usuari conegut.
+confirmLinkIdpReviewProfile=Revisa el perfil
+confirmLinkIdpContinue=Afegeix al compte existent
+
+configureTotpMessage=Heu de configurar l''aplicació mòbil d''autenticació per a activar el compte.
+configureBackupCodesMessage=Heu de configurar els codis de recuperació per a activar el compte.
+updateProfileMessage=Heu d''actualitzar el vostre perfil d''usuari per a activar el compte.
+updatePasswordMessage=Heu de canviar la contrasenya per a activar el compte.
+updateEmailMessage=Heu d''actualitzar la vostra adreça de correu electrònic per a activar el compte.
+resetPasswordMessage=Heu de canviar la contrasenya.
+verifyEmailMessage=Heu de verificar la vostra adreça de correu electrònic per a activar el compte.
+linkIdpMessage=Heu de verificar la vostra adreça electrònica per a enllaçar el compte amb {0}.
+
+emailSentMessage=Aviat hauríeu de rebre un correu electrònic amb més instruccions.
+emailSendErrorMessage=Ha fallat l''enviament del correu electrònic, intenteu-ho de nou més tard.
+
+accountUpdatedMessage=S''ha actualitzat el compte.
+accountPasswordUpdatedMessage=S''ha actualitzat la contrasenya.
+
+delegationCompleteHeader=Inici de sessió correcte
+delegationCompleteMessage=Podeu tancar aquesta finestra del navegador i tornar a la vostra aplicació de consola.
+delegationFailedHeader=Ha fallat l''inici de sessió
+delegationFailedMessage=Podeu tancar aquesta finestra del navegador i tornar a la vostra aplicació de consola per a tornar a connectar.
+
+noAccessMessage=Sense accés
+
+invalidPasswordMinLengthMessage=La contrasenya no és vàlida: la llargària mínima és {0}.
+invalidPasswordMaxLengthMessage=La contrasenya no és vàlida: la llargària màxima és {0}.
+invalidPasswordMinDigitsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} caràcters numèrics.
+invalidPasswordMinLowerCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres minúscules.
+invalidPasswordMinUpperCaseCharsMessage=La contrasenya no és vàlida: ha de contenir almenys {0} lletres majúscules.
+invalidPasswordMinSpecialCharsMessage=Contrasenya incorrecta: ha de contenir almenys {0} caràcters especials.
+invalidPasswordNotUsernameMessage=La contrasenya no és vàlida: no pot ser igual al nom d''usuari.
+invalidPasswordNotEmailMessage=La contrasenya no és vàlida: no pot ser igual al correu electrònic.
+invalidPasswordRegexPatternMessage=La contrasenya no és vàlida: no coincideix amb el patró de l''expressió regular.
+invalidPasswordHistoryMessage=Contrasenya incorrecta: no pot ser igual a cap de les últimes {0} contrasenyes.
+invalidPasswordGenericMessage=La contrasenya no és vàlida: la contrasenya nova no coincideix amb les polítiques de contrasenya.
+
+failedToProcessResponseMessage=No s''ha pogut processar la resposta
+httpsRequiredMessage=Es requereix HTTPS
+realmNotEnabledMessage=El domini no està habilitat
+invalidRequestMessage=Petició incorrecta
+successLogout=No esteu identificat
+failedLogout=Ha fallat la desconnexió.
+unknownLoginRequesterMessage=Sol·licitant d''identificació desconegut
+loginRequesterNotEnabledMessage=El sol·licitant d''inici de sessió està desactivat
+bearerOnlyMessage=Les aplicacions Bearer-only no poden iniciar sessió des del navegador.
+standardFlowDisabledMessage=El client no està autoritzat a iniciar una entrada per navegador amb el tipus de resposta donada. El flux estàndard està inhabilitat per al client.
+implicitFlowDisabledMessage=El client no està autoritzat a iniciar una entrada per navegador amb el tipus de resposta donada. El flux implícit està inhabilitat per al client.
+invalidRedirectUriMessage=L''URI de redirecció no és vàlid
+unsupportedNameIdFormatMessage=El NameIDFormat no està implementat
+invalidRequesterMessage=El sol·licitant no és vàlid
+registrationNotAllowedMessage=El registre no està permès
+resetCredentialNotAllowedMessage=El reinici de les credencials no està permès
+
+permissionNotApprovedMessage=Permís no aprovat.
+noRelayStateInResponseMessage=Sense estat de retransmissió en la resposta del proveïdor d''identitat.
+insufficientPermissionMessage=Permisos insuficients per a enllaçar identitats.
+couldNotProceedWithAuthenticationRequestMessage=No s''ha pogut continuar amb la petició d''autenticació al proveïdor d''identitat.
+couldNotObtainTokenMessage=No s''ha pogut obtenir el codi d''autorització del proveïdor d''identitat.
+unexpectedErrorRetrievingTokenMessage=Error inesperat en obtenir el codi d''autorització del proveïdor d''identitat
+unexpectedErrorHandlingResponseMessage=Error inesperat processant la resposta del proveïdor d''identitat.
+identityProviderAuthenticationFailedMessage=Ha fallat l''autenticació. No ha estat possible autenticar-se en el proveïdor d''identitat.
+couldNotSendAuthenticationRequestMessage=No s''ha pogut enviar la petició d''identificació al proveïdor d''identitat.
+unexpectedErrorHandlingRequestMessage=Error inesperat durant la petició d''identificació al proveïdor d''identitat.
+invalidAccessCodeMessage=Codi d''accés no vàlid.
+sessionNotActiveMessage=La sessió no està activa
+invalidCodeMessage=S''ha produït un error, identifiqueu-vos de nou des de la vostra aplicació.
+cookieNotFoundMessage=No s''ha trobat la galeta. Assegureu-vos que les galetes estan habilitades al vostre navegador.
+insufficientLevelOfAuthentication=El nivell d''autenticació sol·licitat no s''ha satisfet.
+identityProviderUnexpectedErrorMessage=Error no esperat intentant autenticar en el proveïdor d''identitat.
+identityProviderMissingStateMessage=Manca un paràmetre d''estat a la resposta del proveïdor d''identitat.
+identityProviderInvalidResponseMessage=La resposta del proveïdor d''identitat no és vàlida.
+identityProviderInvalidSignatureMessage=La signatura de la resposta del proveïdor d''identitat no és vàlida.
+identityProviderNotFoundMessage=No s''ha trobat cap proveïdor d''identitat.
+identityProviderLinkSuccess=Heu verificat el vostre correu electrònic correctament. Torneu al vostre navegador original i continueu amb l''entrada allà.
+staleCodeMessage=Aquesta pàgina ja no és vàlida, torneu a la vostra aplicació i torneu a entrar
+realmSupportsNoCredentialsMessage=El domini no suporta cap tipus de credencials.
+credentialSetupRequired=No es pot entrar, es requereix la configuració de credencials.
+identityProviderNotUniqueMessage=El domini suporta múltiples proveïdors d''identitat. No s''ha pogut determinar el proveïdor d''identitat que hauria de ser utilitzat per identificar-se.
+emailVerifiedMessage=S''ha verificat el vostre correu electrònic.
+staleEmailVerificationLink=L''enllaç en què heu clicat és un enllaç antic que ja no és vàlid. Potser ja heu verificat el vostre correu electrònic.
+identityProviderAlreadyLinkedMessage=La identitat federada retornada per {0} ja està enllaçada a un altre usuari.
+confirmAccountLinking=Confirmeu l''enllaçat del compte {0} del proveïdor d''identitat {1} amb el vostre compte.
+confirmEmailAddressVerification=Confirmeu la validesa de l''adreça de correu electrònic {0}.
+confirmExecutionOfActions=Completeu les accions següents
+
+locale_ar=àrab
+locale_ca=català
+locale_cs=txec
+locale_da=danès
+locale_de=alemany
+locale_en=anglès
+locale_es=castellà
+locale_fi=finès
+locale_fr=francès
+locale_hu=hongarès
+locale_it=italià
+locale_ja=japonès
+locale_lt=lituà
+locale_lv=letó
+locale_nl=neerlandès
+locale_no=noruec
+locale_pl=polonès
+locale_pt_BR=portuguès (Brasil)
+locale_ru=rus
+locale_sk=eslovè
+locale_sv=suec
+locale_tr=turc
+locale_zh-CN=xinès simplificat
+
+backToApplication=&laquo; Torna a l''aplicació
+missingParameterMessage=Manquen paràmetres\\: {0}
+clientNotFoundMessage=No s''ha trobat el client.
+clientDisabledMessage=El client és inhabilitat.
+invalidParameterMessage=El paràmetre no és vàlid\\: {0}
+alreadyLoggedIn=Ja esteu identificat.
+differentUserAuthenticated=Ja esteu identificat amb l''usuari diferent «{0}» en aquesta sessió. Desconnecteu primer.
+brokerLinkingSessionExpired=S''ha sol·licitat l''enllaçat d''un compte agent, però la sessió actual ja no és vàlida.
+proceedWithAction=&raquo; Feu clic aquí per a continuar
+acrNotFulfilled=Els requisits d''autenticació no s''han satisfet
+
+requiredAction.CONFIGURE_TOTP=Configura l''OTP
+requiredAction.TERMS_AND_CONDITIONS=Termes i condicions
+requiredAction.UPDATE_PASSWORD=Actualitza la contrasenya
+requiredAction.UPDATE_PROFILE=Actualitza el perfil
+requiredAction.VERIFY_EMAIL=Verifica el correu electrònic
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Genera codis de recuperació
+requiredAction.webauthn-register-passwordless=Registre sense contrasenya WebAuthn
+
+invalidTokenRequiredActions=Les accions requerides a l''enllaç no són vàlides
+
+doX509Login=Us identificareu com a\\:
+clientCertificate=Certificat de client X509\\:
+noCertificate=[Cap certificat]
+
+
+pageNotFound=No s''ha trobat la pàgina
+internalServerError=S''ha produït un error intern
+
+console-username=Nom d''usuari:
+console-password=Contrasenya:
+console-otp=Contrasenya d''un sol ús:
+console-new-password=Contrasenya nova:
+console-confirm-password=Confirma la contrasenya:
+console-update-password=Es requereix que actualitzeu la vostra contrasenya.
+console-verify-email=Heu de verificar l''adreça de correu electrònic. Hem enviat un correu electrònic a {0} que conté un codi de verificació. Introduïu aquest codi al camp següent.
+console-email-code=Codi de verificació:
+console-accept-terms=Voleu acceptar els termes? [s/n]:
+console-accept=s
+
+# Openshift messages
+openshift.scope.user_info=Informació d''usuari
+openshift.scope.user_check-access=Informació d''accessos d''usuari
+openshift.scope.user_full=Accés total
+openshift.scope.list-projects=Llista els projectes
+
+# SAML authentication
+saml.post-form.title=Redirecció d''autenticació
+saml.post-form.message=S''està redirigint, espereu.
+saml.post-form.js-disabled=El JavaScript està inhabilitat. Us recomanem que l''habiliteu. Feu clic al botó de sota per a continuar.
+saml.artifactResolutionServiceInvalidResponse=No s''ha pogut resoldre l''artefacte.
+
+#authenticators
+otp-display-name=Aplicació d''autenticació
+otp-help-text=Introduïu el codi de verificació de l''aplicació d''autenticació.
+otp-reset-description=Quina configuració d''OTP voleu suprimir?
+password-display-name=Contrasenya
+password-help-text=Entreu introduint la vostra contrasenya.
+auth-username-form-display-name=Nom d''usuari
+auth-username-form-help-text=Comenceu a identificar-vos introduint el vostre nom d''usuari
+auth-username-password-form-display-name=Nom d''usuari i contrasenya
+auth-username-password-form-help-text=Entreu introduint el vostre nom d''usuari i contrasenya.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Codi d''autenticació de recuperació
+auth-recovery-authn-code-form-help-text=Introduïu un codi d''autenticació de recuperació d''una llista prèviament generada.
+auth-recovery-code-info-message=Introduïu el codi de recuperació especificat.
+auth-recovery-code-prompt=Codi de recuperació #{0}
+auth-recovery-code-header=Entreu amb un codi d''autenticació de recuperació
+recovery-codes-error-invalid=El codi d''autenticació de recuperació no és vàlid
+recovery-code-config-header=Codis d''autenticació de recuperació
+recovery-code-config-warning-title=Aquests codis de recuperació no es tornaran a mostrar després que abandoneu la pàgina
+recovery-code-config-warning-message=Assegureu-vos que els imprimiu, baixeu o copieu a un gestor de contrasenyes i els deseu de manera segura. Cancel·lar aquesta configuració eliminarà aquests codis de recuperació del vostre compte.
+recovery-codes-print=Imprimeix
+recovery-codes-download=Baixa
+recovery-codes-copy=Copia
+recovery-codes-copied=S''ha copiat
+recovery-codes-confirmation-message=He desat aquests codis en algun lloc segur
+recovery-codes-action-complete=Completa la configuració
+recovery-codes-action-cancel=Cancel·la la configuració
+recovery-codes-download-file-header=Deseu aquests codis de recuperació en un lloc segur.
+recovery-codes-download-file-description=Els codis de recuperació són codis d''accés d''un sol ús que vos permeten entrar al vostre compte si no teniu accés al vostre autenticador.
+recovery-codes-download-file-date=Aquests codis s''han generat el
+recovery-codes-label-default=Codis de recuperació
+
+# WebAuthn
+webauthn-display-name=Clau de seguretat
+webauthn-help-text=Utilitzeu la vostra clau de seguretat per a entrar.
+webauthn-passwordless-display-name=Clau de seguretat
+webauthn-passwordless-help-text=Utilitzeu la vostra clau de seguretat per a entrar sense contrasenya.
+webauthn-login-title=Entrada amb clau de seguretat
+webauthn-registration-title=Registre d''una clau de seguretat
+webauthn-available-authenticators=Claus de seguretat disponibles
+webauthn-unsupported-browser-text=El WebAuthn no està implementat per aquest navegador. Proveu-ho amb un altre o contacteu amb l''administrador.
+webauthn-doAuthenticate=Entra amb una clau de seguretat
+webauthn-createdAt-label=Creada
+
+# WebAuthn Error
+webauthn-error-title=Error de la clau de seguretat
+webauthn-error-registration=No s''ha pogut registrar la vostra clau de seguretat.<br/> {0}
+webauthn-error-api-get=No s''ha pogut identificar amb la clau de seguretat.<br/> {0}
+webauthn-error-different-user=L''usuari identificat primer no és l''autenticat per la clau de seguretat.
+webauthn-error-auth-verification=El resultat de l''autenticació amb clau de seguretat no és vàlid.<br/>{0}
+webauthn-error-register-verification=El resultat del registre amb clau de seguretat no és vàlid.<br/>{0}
+webauthn-error-user-not-found=L''usuari identificat per la clau de seguretat és desconegut.
+
+# Identity provider
+identity-provider-redirector=Connecta amb un altre proveïdor d''identitat
+identity-provider-login-label=O entra amb
+idp-email-verification-display-name=Verificació de correu electrònic
+idp-email-verification-help-text=Enllaceu el compte verificant la vostra adreça de correu electrònic.
+idp-username-password-form-display-name=Nom d''usuari i contrasenya
+idp-username-password-form-help-text=Enllaceu el vostre compte mitjançant una identificació.
+
+finalDeletionConfirmation=Si elimineu el vostre compte, no es podrà restaurar. Per a mantenir el vostre compte, feu clic en Cancel·la.
+irreversibleAction=Aquesta acció és irreversible
+deleteAccountConfirm=Confirmació de supressió del compte
+
+deletingImplies=La supressió del vostre compte implica:
+errasingData=Eliminar totes les vostres dades
+loggingOutImmediately=Desconnectar-vos immediatament
+accountUnusable=Qualsevol ús posterior de l''aplicació no serà possible amb aquest compte
+userDeletedSuccessfully=S''ha eliminat l''usuari correctament
+
+access-denied=S''ha denegat l''accés
+access-denied-when-idp-auth=S''ha denegat l''accés mentre s''autenticava amb {0}
+
+frontchannel-logout.title=Sortida
+frontchannel-logout.message=Esteu sortint de les aplicacions següents
+logoutConfirmTitle=Sortida
+logoutConfirmHeader=Esteu segur que voleu sortir?
+doLogout=Surt
+
+readOnlyUsernameMessage=No podeu actualitzar el vostre nom d''usuari perquè és de només lectura.
diff --git a/themes/custom-theme-template/login/messages/messages_cs.properties b/themes/custom-theme-template/login/messages/messages_cs.properties
new file mode 100644
index 0000000000000000000000000000000000000000..cae02d773516acbb4d7eda60bb4e9df8614949a3
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_cs.properties
@@ -0,0 +1,522 @@
+doLogIn=Přihlásit se
+doRegister=Registrovat se
+doRegisterSecurityKey=Registrovat se
+doCancel=Zrušit
+doSubmit=Odeslat
+doBack=Zpět
+doYes=Ano
+doNo=Ne
+doContinue=Pokračovat
+doIgnore=Ignorovat
+doAccept=Potvrdit
+doDecline=Zamítnout
+doForgotPassword=Zapomenuté heslo?
+doClickHere=Klikněte zde
+doImpersonate=Zosobnit
+doTryAgain=Zkusit znovu
+doTryAnotherWay=Zkusit jiným způsobem
+doConfirmDelete=Potvrdit odstranění
+errorDeletingAccount=Nastala chyba při odstraňování účtu
+deletingAccountForbidden=Nemáte dostatečná oprávnění k odstranění vašeho vlastního účtu, kontaktujte administrátora.
+kerberosNotConfigured=Kerberos není nakonfigurován
+kerberosNotConfiguredTitle=Kerberos není nakonfigurován
+bypassKerberosDetail=Buď nejste přihlášeni přes Kerberos nebo váš prohlížeč není nastaven pro přihlášení Kerberos. Klepnutím na tlačítko pokračujte k přihlášení jinými způsoby
+kerberosNotSetUp=Kerberos není nastaven. Nemůžete se přihlásit.
+registerTitle=Registrovat
+loginAccountTitle=Přihlásit k vašemu účtu
+loginTitle=Přihlásit do {0}
+loginTitleHtml={0}
+impersonateTitle={0} Zosobnit uživatele
+impersonateTitleHtml=<strong>{0}</strong> Zosobnit uživatele
+realmChoice=Realm
+unknownUser=Neznámý uživatel
+loginTotpTitle=Nastavení autentikátoru OTP
+loginProfileTitle=Aktualizovat informace o účtu
+loginIdpReviewProfileTitle=Aktualizovat informace o účtu
+loginTimeout=Přihlašování trvalo příliš dlouho. Přihlašovací proces začíná od začátku.
+reauthenticate=Pro pokračování se prosím znovu přihlaste
+oauthGrantTitle=Udělit přístup {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Ujistěte se, že důvěřujete {0}. Zjistěte, jak {0} nakládá s daty uživatelů.
+oauthGrantReview=Můžete si přečíst
+oauthGrantTos=podmínky používání služby.
+oauthGrantPolicy=zásady ochrany osobních údajů.
+errorTitle=Je nám líto...
+errorTitleHtml=<strong>Omlouváme</strong> se ...
+emailVerifyTitle=Ověření e-mailu
+emailForgotTitle=Zapomněli jste heslo?
+updateEmailTitle=Aktualizace e-mailu
+emailUpdateConfirmationSentTitle=Potvrzovací e-mail odeslán
+emailUpdateConfirmationSent=Potvrzovací e-mail byl odeslán na adresu {0}. Pro dokončení aktualizace e-mailu postupujte podle pokynů.
+emailUpdatedTitle=E-mail byl aktualizován
+emailUpdated=E-mail účtu byl úspěšně aktualizován na {0}.
+updatePasswordTitle=Aktualizace hesla
+codeSuccessTitle=Kód úspěchu 
+codeErrorTitle=Kód chyby\: {0}
+displayUnsupported=Požadovaný typ zobrazení není podporovaný
+browserRequired=Pro přihlášení je vyžadován prohlížeč
+browserContinue=Pro dokončení přihlášení je vyžadován prohlížeč
+browserContinuePrompt=Otevřít prohlížeč a pokračovat v přihlášení? [a/n]:
+browserContinueAnswer=a
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Interní
+unknown=Neznámé
+
+termsTitle=Smluvní podmínky
+termsText=<p>Smluvní podmínky k odsouhlasení</p>
+termsPlainText=Smluvní podmínky k odsouhlasení.
+termsAcceptanceRequired=Musíte souhlasit s našimi smluvními podmínkami.
+acceptTerms=Souhlasím se smluvními podmínkami
+
+recaptchaFailed=Neplatná Recaptcha
+recaptchaNotConfigured=Recaptcha je vyžadována, ale není nakonfigurována
+consentDenied=Souhlas byl zamítnut.
+
+noAccount=Nový uživatel?
+username=Přihlašovací jméno
+usernameOrEmail=Přihlašovací jméno nebo e-mail
+firstName=Křestní jméno
+givenName=Křestní jména
+fullName=Celé jméno
+lastName=Příjmení
+familyName=Příjmení
+email=E-mail
+password=Heslo
+passwordConfirm=Potvrdit heslo
+passwordNew=Nové heslo
+passwordNewConfirm=Potvrdit nové heslo
+hidePassword=Skrýt heslo
+showPassword=Zobrazit heslo
+rememberMe=Pamatovat si mě
+authenticatorCode=Jednorázový kód
+address=Adresa
+street=Ulice
+locality=Město
+region=Kraj
+postal_code=PSČ
+country=Stát
+emailVerified=E-mail ověřen
+website=Webová stránka
+phoneNumber=Telefonní číslo
+phoneNumberVerified=Telefonní číslo ověřeno
+gender=Pohlaví
+birthday=Datum narození
+zoneinfo=Časová zóna
+gssDelegationCredential=GSS Delegované Oprávnění
+logoutOtherSessions=Odhlásit se z ostatních zařízení
+
+profileScopeConsentText=Uživatelský profil
+emailScopeConsentText=E-mailová adresa
+addressScopeConsentText=Adresa
+phoneScopeConsentText=Telefonní číslo
+offlineAccessScopeConsentText=Přístup offline
+samlRoleListScopeConsentText=Moje role
+rolesScopeConsentText=Uživatelské role
+
+restartLoginTooltip=Začít s přihlašováním od začátku
+
+loginTotpIntro=Musíte si nakonfigurovat generátor jednorázových kódů (OTP) pro přístup k účtu
+loginTotpStep1=Nainstalujte do mobilu jednu z následujících aplikací
+loginTotpStep2=Otevřete aplikaci a naskenujte čárový kód
+loginTotpStep3=Zadejte jednorázový kód poskytnutý aplikací a klepnutím na tlačítko Odeslat dokončete nastavení
+loginTotpStep3DeviceName=Zadejte název zařízení pro jednodušší správu jednorázových kódů (OTP) zařízení.
+loginTotpManualStep2=Otevřete aplikaci a zadejte klíč
+loginTotpManualStep3=Použijte následující hodnoty konfigurace, pokud aplikace umožňuje jejich nastavení
+loginTotpUnableToScan=Nelze skenovat?
+loginTotpScanBarcode=Skenovat čárový kód?
+loginCredential=Přihlašovací údaje
+loginOtpOneTime=Jednorázový kód
+loginTotpType=Typ
+loginTotpAlgorithm=Algoritmus
+loginTotpDigits=Číslice
+loginTotpInterval=Interval
+loginTotpCounter=Počítadlo
+loginTotpDeviceName=Název zařízení
+
+loginTotp.totp=Založeno na čase
+loginTotp.hotp=Založeno na počítadle
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=Vyberte metodu přihlášení
+
+oauthGrantRequest=Poskytujete tyto přístupová oprávnění?
+inResource=v
+
+oauth2DeviceVerificationTitle=Přihlášení na zařízení
+verifyOAuth2DeviceUserCode=Zadejte kód z vašeho zařízení a klikněte na Odeslat
+oauth2DeviceInvalidUserCodeMessage=Nesprávný kód, zkuste to prosím znovu.
+oauth2DeviceExpiredUserCodeMessage=Platnost kódu vypršela. Vraťte se prosím do vašeho zařízení a zkuste se připojit znovu.
+oauth2DeviceVerificationCompleteHeader=Úspěšné přihlášení v zařízení
+oauth2DeviceVerificationCompleteMessage=Můžete zavřít toto okno prohlížeče a vrátit se do vašeho zařízení.
+oauth2DeviceVerificationFailedHeader=Selhalo přihlášení v zařízení
+oauth2DeviceVerificationFailedMessage=Můžete zavřít toto okno prohlížeče a vrátit se do vašeho zařízení a zkusit se znovu připojit.
+oauth2DeviceConsentDeniedMessage=Připojení zařízení odmítnuto.
+oauth2DeviceAuthorizationGrantDisabledMessage=Klient nemá povoleno iniciovat OAuth 2.0 Device Authorization Grant. Flow je pro klienta zakázáno.
+
+emailVerifyInstruction1=Byl Vám zaslán e-mail s pokyny k ověření vaší e-mailové adresy.
+emailVerifyInstruction2=Nezískali jste v e-mailu ověřovací kód?
+emailVerifyInstruction3=znovu odeslat e-mail.
+
+emailLinkIdpTitle=Odkaz {0}
+emailLinkIdp1=Byl vám zaslán e-mail s pokyny k propojení {0} účtu {1} s vaším účtem {2}.
+emailLinkIdp2=Nezískali jste v e-mailu ověřovací kód?
+emailLinkIdp3=znovu odeslat e-mail.
+emailLinkIdp4=Pokud jste již ověřili e-mail v jiném prohlížeči
+emailLinkIdp5=pokračovat.
+
+backToLogin=&laquo; Zpět k přihlášení
+
+emailInstruction=Zadejte své uživatelské jméno nebo e-mailovou adresu a my vám zašleme pokyny k vytvoření nového hesla.
+emailInstructionUsername=Zadejte své uživatelské jméno a my vám zašleme pokyny k vytvoření nového hesla.
+
+copyCodeInstruction=Zkopírujte tento kód a vložte jej do své aplikace:
+
+pageExpiredTitle=Vypršela platnost stránky
+pageExpiredMsg1=Pro restart procesu přihlášení
+pageExpiredMsg2=Pokračovat v procesu přihlášení
+
+personalInfo=Osobní údaje:
+role_admin=Administrátor realmu
+role_realm-admin=Administrátor realmu
+role_create-realm=Vytvořit realm
+role_create-client=Vytvořit klienta
+role_view-realm=Zobrazit realm
+role_view-users=Zobrazit uživatele
+role_view-applications=Zobrazit aplikace
+role_view-clients=Zobrazit klienty
+role_view-events=Zobrazit události
+role_view-identity-providers=Zobrazit poskytovatele identity
+role_manage-realm=Spravovat realm
+role_manage-users=Spravovat uživatele
+role_manage-applications=Spravovat aplikace
+role_manage-identity-providers=Spravovat poskytovatele identity
+role_manage-clients=Spravovat klienty
+role_manage-events=Spravovat události
+role_view-profile=Zobrazit profil
+role_manage-account=Spravovat účet
+role_manage-account-links=Spravovat odkazy na účet
+role_read-token=Číst token
+role_offline-access=Přístup offline
+client_account=Účet
+client_account-console=Uživatelská konzola
+#client_security-admin-console=Security Admin Console
+#client_admin-cli=Admin CLI
+client_realm-management=Správa realmu
+client_broker=Broker
+
+requiredFields=Vyžadované položky
+
+invalidUserMessage=Neplatné jméno nebo heslo.
+invalidUsernameMessage=Neplatné jméno.
+invalidUsernameOrEmailMessage=Neplatné jméno nebo e-mail.
+invalidPasswordMessage=Neplatné heslo.
+invalidEmailMessage=Neplatný e-mail.
+accountDisabledMessage=Účet je neplatný, kontaktujte administrátora.
+accountTemporarilyDisabledMessage=Účet je dočasně deaktivován, kontaktujte administrátora nebo zkuste později.
+expiredCodeMessage=Platnost přihlášení vypršela. Přihlaste se znovu.
+expiredActionMessage=Akce vypršela. Pokračujte přihlášením.
+expiredActionTokenNoSessionMessage=Akce vypršela.
+expiredActionTokenSessionExistsMessage=Akce vypršela. Začněte znovu
+sessionLimitExceeded=Příliš mnoho navázaných spojení
+
+missingFirstNameMessage=Zadejte prosím jméno.
+missingLastNameMessage=Zadejte prosím příjmení.
+missingEmailMessage=Zadejte prosím e-mail.
+missingUsernameMessage=Zadejte prosím uživatelské jméno.
+missingPasswordMessage=Zadejte prosím heslo.
+missingTotpMessage=Zadejte prosím kód ověřovatele.
+missingTotpDeviceNameMessage=Zadejte prosím jméno zařízení.
+notMatchPasswordMessage=Hesla se neshodují.
+
+error-invalid-value=Nesprávná hodnota.
+error-invalid-blank=Zadejte prosím hodnotu.
+error-empty=Zadejte prosím hodnotu.
+error-invalid-length=Délka musí být mezi {1} a {2}.
+error-invalid-length-too-short=Minimální délka je {1}.
+error-invalid-length-too-long=Maximální délka je {2}.
+error-invalid-email=Nesprávná e-mailová adresa.
+error-invalid-number=Nesprávné číslo.
+error-number-out-of-range=Číslo musí být mezi {1} a {2}.
+error-number-out-of-range-too-small=Minimální hodnota čísla je {1}.
+error-number-out-of-range-too-big=Maximální hodnota čísla je {2}.
+error-pattern-no-match=Nesprávná hodnota.
+error-invalid-uri=Nesprávná URL adresa.
+error-invalid-uri-scheme=Nesprávné URL schéma.
+error-invalid-uri-fragment=Nesprávný fragment URL.
+error-user-attribute-required=Zadejte prosím tuto položku.
+error-invalid-date=Nesprávné datum.
+error-user-attribute-read-only=Tato položka je jen ke čtení.
+error-username-invalid-character=Hodnota obsahuje nevalidní znak.
+error-person-name-invalid-character=Hodnota obsahuje nevalidní znak.
+error-reset-otp-missing-id=Vyberte prosím OTP konfiguraci.
+
+invalidPasswordExistingMessage=Neplatné existující heslo.
+invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na černé listině.
+invalidPasswordConfirmMessage=Potvrzení hesla se neshoduje.
+invalidTotpMessage=Neplatný kód ověřování.
+
+usernameExistsMessage=Uživatelské jméno již existuje.
+emailExistsMessage=E-mail již existuje.
+
+federatedIdentityExistsMessage=Uživatel s {0} {1} již existuje. Přihlaste se ke správě účtu a propojte účet.
+federatedIdentityUnavailableMessage=Uživatel {0} přihlášený poskytovatelem identit {1} neexistuje. Kontaktujte prosím administrátora.
+federatedIdentityUnmatchedEssentialClaimMessage=Token identity vydaný poskytovatelem identity neodpovídá nakonfigurovanému essential claim. Kontaktujte prosím administrátora.
+
+confirmLinkIdpTitle=Účet již existuje
+federatedIdentityConfirmLinkMessage=Uživatel s {0} {1} již existuje. Jak chcete pokračovat?
+federatedIdentityConfirmReauthenticateMessage=Ověřte jako {0} k propojení účtu {1}
+nestedFirstBrokerFlowMessage={0} uživatel {1} není propojen s žádným známým uživatelem.
+confirmLinkIdpReviewProfile=Zkontrolujte profil
+confirmLinkIdpContinue=Přidat do existujícího účtu
+
+configureTotpMessage=Chcete-li aktivovat účet, musíte nastavit službu Mobile Authenticator.
+configureBackupCodesMessage=Pro aktivaci svého účtu musíte nakonfigurovat záložní kódy.
+updateProfileMessage=Pro aktivaci účtu musíte aktualizovat svůj uživatelský profil.
+updatePasswordMessage=Pro aktivaci účtu musíte provést aktualizaci hesla.
+updateEmailMessage=Pro aktivaci účtu musíte aktualizovat svou e-mailovou adresu.
+resetPasswordMessage=Je třeba změnit heslo.
+verifyEmailMessage=Pro aktivaci účtu musíte ověřit vaši e-mailovou adresu.
+linkIdpMessage=Potřebujete-li ověřit vaši e-mailovou adresu, propojte svůj účet s {0}.
+
+emailSentMessage=Měli byste brzy obdržet e-mail s dalšími pokyny.
+emailSendErrorMessage=Nepodařilo se odeslat e-mail, zkuste to prosím později.
+
+accountUpdatedMessage=Váš účet byl aktualizován.
+accountPasswordUpdatedMessage=Vaše heslo bylo aktualizováno.
+
+delegationCompleteHeader=Přihlášení úspěšné
+delegationCompleteMessage=Můžete zavřít toto okno prohlížeče a vrátit se do aplikace.
+delegationFailedHeader=Přihlášení selhalo
+delegationFailedMessage=Můžete zavřít toto okno prohlížeče a vrátit se do aplikace a zkusit se znovu přihlásit.
+
+noAccessMessage=Žádný přístup
+
+invalidPasswordMinLengthMessage=Neplatné heslo: minimální délka {0}.
+invalidPasswordMaxLengthMessage=Neplatné heslo: maximální délka {0}.
+invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovat nejméně {0} číslic.
+invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovat minimálně {0} malé znaky.
+invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} velká písmena.
+invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovat nejméně {0} speciální znaky.
+invalidPasswordNotUsernameMessage=Neplatné heslo: nesmí být totožné s uživatelským jménem.
+invalidPasswordNotEmailMessage=Neplatné heslo: nesmí být totožné s e-mailovou adresou.
+invalidPasswordRegexPatternMessage=Neplatné heslo: neshoduje se vzorem regulérního výrazu.
+invalidPasswordHistoryMessage=Neplatné heslo: Nesmí se rovnat žádnému z posledních {0} hesel.
+invalidPasswordGenericMessage=Neplatné heslo: nové heslo neodpovídá pravidlům hesla.
+
+failedToProcessResponseMessage=Nepodařilo se zpracovat odpověď
+httpsRequiredMessage=Požadováno HTTPS
+realmNotEnabledMessage=Realm není povolen
+invalidRequestMessage=Neplatná žádost
+successLogout=Odhlášení bylo úspěšné
+failedLogout=Odhlášení se nezdařilo
+unknownLoginRequesterMessage=Neznámý žadatel o přihlášení
+loginRequesterNotEnabledMessage=Žadatel o přihlášení není povolen
+bearerOnlyMessage=Aplikace bearer-only nemohou iniciovat přihlašování pomocí prohlížeče
+standardFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Standardní tok je pro klienta zakázán.
+implicitFlowDisabledMessage=Klient nesmí iniciovat přihlašování prohlížeče s daným typem odpovědi. Implicitní tok je pro klienta zakázán.
+invalidRedirectUriMessage=Neplatná adresa přesměrování
+unsupportedNameIdFormatMessage=Nepodporovaný NameIDFormat
+invalidRequesterMessage=Neplatný žadatel
+registrationNotAllowedMessage=Registrace není povolena
+resetCredentialNotAllowedMessage=Reset Credential není povoleno
+
+permissionNotApprovedMessage=Oprávnění nebylo schváleno.
+noRelayStateInResponseMessage=Chybí relay state v odpovědi od poskytovatele identity.
+insufficientPermissionMessage=Nedostatečná oprávnění k propojení identit.
+couldNotProceedWithAuthenticationRequestMessage=Nemohu pokračovat s žádostí o ověření poskytovateli identity.
+couldNotObtainTokenMessage=Nelze získat token od poskytovatele identity.
+unexpectedErrorRetrievingTokenMessage=Neočekávaná chyba při načítání tokenu od poskytovatele identity.
+unexpectedErrorHandlingResponseMessage=Neočekávaná chyba při zpracování odpovědi od poskytovatele identity.
+identityProviderAuthenticationFailedMessage=Ověření selhalo. Nelze ověřit s poskytovatelem identity.
+couldNotSendAuthenticationRequestMessage=Nelze odeslat žádost o ověření poskytovateli identity.
+unexpectedErrorHandlingRequestMessage=Neočekávaná chyba při zpracování požadavku na ověření poskytovateli identity.
+invalidAccessCodeMessage=Neplatný přístupový kód.
+sessionNotActiveMessage=Session není aktivní.
+invalidCodeMessage=Došlo k chybě, přihlaste se znovu prostřednictvím své aplikace.
+cookieNotFoundMessage=Soubor cookie nenalezen. Ujistěte se prosím, že máte v prohlížeči povolené cookies.
+insufficientLevelOfAuthentication=Nebylo dosaženo požadované úrovně autentizace.
+identityProviderUnexpectedErrorMessage=Neočekávaná chyba při ověřování s poskytovatelem identity
+identityProviderMissingStateMessage=V odpovědi od poskytovatele identit chybí parametr state.
+identityProviderMissingCodeOrErrorMessage=V odpovědi poskytovatele identit chybí parametr code nebo error.
+identityProviderInvalidResponseMessage=Nevalidní odpověď od poskytovatele identity.
+identityProviderInvalidSignatureMessage=Nevalidní podpis v odpovědi od poskytovatele identity.
+identityProviderNotFoundMessage=Nelze najít poskytovatele identity s identifikátorem.
+identityProviderLinkSuccess=Úspěšně jste ověřili svůj e-mail. Vraťte se prosím zpět do původního prohlížeče a pokračujte tam s přihlašovacími údaji.
+staleCodeMessage=Tato stránka již není platná. Vraťte se zpět do aplikace a přihlaste se znovu
+realmSupportsNoCredentialsMessage=Realm nepodporuje žádný typ pověření.
+credentialSetupRequired=Není možné se přihlásit, je vyžadována konfigurace přístupových údajů.
+identityProviderNotUniqueMessage=Realm podporuje více poskytovatelů identity. Nelze určit, s jakým zprostředkovatelem identity se má ověřit.
+emailVerifiedMessage=Vaše e-mailová adresa byla ověřena.
+emailVerifiedAlreadyMessage=Vaše e-mailová adresa již byla ověřena.
+staleEmailVerificationLink=Odkaz, na který jste klikli, je starý odkaz a již není platný. Možná jste již ověřili svůj e-mail?
+identityProviderAlreadyLinkedMessage=Federovaná identita vrácená {0} je již propojena s jiným uživatelem.
+confirmAccountLinking=Potvrďte propojení účtu {0} poskytovatele identity {1} s vaším účtem.
+confirmEmailAddressVerification=Potvrďte platnost e-mailové adresy {0}.
+confirmExecutionOfActions=Proveďte následující akce
+
+#locale_ar=عربي
+#locale_ca=Català
+#locale_cs=Čeština
+#locale_da=Dansk
+#locale_de=Deutsch
+#locale_en=English
+#locale_es=Español
+#locale_fi=Suomi
+#locale_fr=Français
+#locale_hu=Magyar
+#locale_it=Italiano
+#locale_ja=日本語
+#locale_lt=Lietuvių
+#locale_lv=Latviešu
+#locale_nl=Nederlands
+#locale_no=Norsk
+#locale_pl=Polski
+#locale_pt_BR=Português (Brasil)
+#locale_ru=Русский
+#locale_sk=Slovenčina
+#locale_sv=Svenska
+#locale_th=ไทย
+#locale_tr=Türkçe
+#locale_zh-CN=中文简体
+
+backToApplication=&laquo; Zpět na aplikaci
+missingParameterMessage=Chybějící parametry\: {0}
+clientNotFoundMessage=Klient nebyl nalezen.
+clientDisabledMessage=Klient byl zneplatněn.
+invalidParameterMessage=Neplatný parametr\: {0}
+alreadyLoggedIn=Jste již přihlášeni.
+differentUserAuthenticated=Jste již v této relaci ověřeni jako jiný uživatel '' {0} ''. Nejdříve se odhlaste.
+brokerLinkingSessionExpired=Požadované propojení účtu brokerů, ale aktuální relace již není platná.
+proceedWithAction=&raquo; Klikněte zde pro pokračování
+acrNotFulfilled=Nebyly naplněny požadavky autentizace
+
+requiredAction.CONFIGURE_TOTP=Konfigurovat OTP
+requiredAction.TERMS_AND_CONDITIONS=Smluvní podmínky
+requiredAction.UPDATE_PASSWORD=Aktualizace hesla
+requiredAction.UPDATE_PROFILE=Aktualizovat profil
+requiredAction.VERIFY_EMAIL=Ověřit e-mail
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generování kódů pro obnovení
+#requiredAction.webauthn-register-passwordless=Webauthn Register Passwordless
+
+invalidTokenRequiredActions=Požadované akce obsažené v daném odkazu nejsou validní
+
+doX509Login=Budete přihlášeni jako\:
+clientCertificate=Klientský X509 certifikát\:
+noCertificate=[Žádný certifikát]
+
+
+pageNotFound=Stránka nenalezena
+internalServerError=Nastala interní chyba serveru
+
+console-username=Jméno:
+console-password=Heslo:
+console-otp=Jednorázové heslo:
+console-new-password=Nové heslo:
+console-confirm-password=Potvrzení hesla:
+console-update-password=Je vyžadována změna hesla.
+console-verify-email=Musíte ověřit svou e-mailovou adresu. Odeslali jsme e-mail na {0}, který obsahuje ověřovací kód. Zadejte prosím tento kód do pole níže.
+console-email-code=Kód z e-mailu:
+console-accept-terms=Souhlasit s podmínkami? [a/n]:
+console-accept=a
+
+# Openshift messages
+openshift.scope.user_info=Informace o uživateli
+openshift.scope.user_check-access=Informace o přístupu uživatele
+openshift.scope.user_full=Plný přístup
+openshift.scope.list-projects=Seznam projektů
+
+# SAML authentication
+saml.post-form.title=Přesměrování přihlášení
+saml.post-form.message=Přesměrovávám, čekejte prosím.
+saml.post-form.js-disabled=JavaScript není povolený. Důrazně doporučujeme jej povolit. Pro pokračování stiskněte tlačítko níže.
+saml.artifactResolutionServiceInvalidResponse=Nepovedlo se rozpoznat SAML artefakt.
+
+#authenticators
+otp-display-name=Autentizační Aplikace
+otp-help-text=Zadejte ověřovací kód z aplikace.
+otp-reset-description=Která konfigurace OTP má být odstraněna?
+password-display-name=Heslo
+password-help-text=Přihlaste se pomocí hesla.
+auth-username-form-display-name=Jméno
+auth-username-form-help-text=Začněte přihlášení zadáním svého uživatelského jména
+auth-username-password-form-display-name=Jméno a heslo
+auth-username-password-form-help-text=Přihlaste se pomocí jména a hesla.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Kód pro obnovu přístupu
+auth-recovery-authn-code-form-help-text=Zadejte kód pro obnovu přístupu z dříve vygenerovaného seznamu.
+auth-recovery-code-info-message=Zadejte specifikovaný kód pro obnovu.
+auth-recovery-code-prompt=Kód pro obnovu #{0}
+auth-recovery-code-header=Přihlaste se kódem pro obnovu přístupu
+recovery-codes-error-invalid=Nesprávný kód pro obnovu přístupu
+recovery-code-config-header=Kódy pro obnovu přístupu
+recovery-code-config-warning-title=Tyto kódy pro obnovu nebudou znovu zobrazeny, když tuto stránku opustíte
+recovery-code-config-warning-message=Kódy pro obnovu si vytiskněte, stáhněte nebo zkopírujte do správce hesel a držte je v bezpečí. Stornování této konfigurace odstraní kódy pro obnovu z vašeho účtu.
+recovery-codes-print=Tisknout
+recovery-codes-download=Stáhnout
+recovery-codes-copy=Kopírovat
+recovery-codes-copied=Zkopírováno
+recovery-codes-confirmation-message=Mám tyto kódy bezpečně uložené
+recovery-codes-action-complete=Dokončit konfiguraci
+recovery-codes-action-cancel=Stornovat konfiguraci
+recovery-codes-download-file-header=Uchovejte tyto kódy pro obnovu v bezpečí.
+recovery-codes-download-file-description=Kódy pro obnovu jsou hesla pro jednorázové použití, pomocí kterých se můžete přihlásit bez přístupu k autentikátoru.
+recovery-codes-download-file-date=Tyto kódy byly generovány
+recovery-codes-label-default=Kódy pro obnovu
+
+# WebAuthn
+webauthn-display-name=Bezpečnostní klíč
+webauthn-help-text=Použijte k přihlášení bezpečnostní klíč.
+webauthn-passwordless-display-name=Bezpečnostní klíč
+webauthn-passwordless-help-text=Použijte bezpečnostní klíč k přihlášení bez hesla.
+webauthn-login-title=Přihlášení bezpečnostním klíčem
+webauthn-registration-title=Registrace bezpečnostního klíče
+webauthn-available-authenticators=Dostupné bezpečnostní klíče
+webauthn-unsupported-browser-text=WebAuthn není v tomto prohlížeči podporováno. Zkuste jiný prohlížeč nebo kontaktujte svého administrátora.
+webauthn-doAuthenticate=Přihlášení bezpečnostním klíčem
+webauthn-createdAt-label=Vytvořeno
+
+# WebAuthn Error
+webauthn-error-title=Chyba bezpečnostního klíče
+webauthn-error-registration=Selhala registrace vašeho bezpečnostního klíče.<br/> {0}
+webauthn-error-api-get=Selhalo přihlášení pomocí bezpečnostního klíče.<br/> {0}
+webauthn-error-different-user=První přihlášený uživatel není totožný s uživatelem přihlášeným pomocí bezpečnostního klíče.
+webauthn-error-auth-verification=Nevalidní výsledek přihlášení pomocí bezpečnostního klíče.<br/> {0}
+webauthn-error-register-verification=Nevalidní výsledek registrace bezpečnostního klíče.<br/> {0}
+webauthn-error-user-not-found=Neznámý uživatel přihlášen pomocí bezpečnostního klíče.
+
+# Identity provider
+identity-provider-redirector=Propojit s jiným poskytovatelem identit
+identity-provider-login-label=Nebo se přihlaste pomocí
+idp-email-verification-display-name=Ověření e-mailu
+idp-email-verification-help-text=Proveďte spárování účtu ověřením e-mailu.
+idp-username-password-form-display-name=Jméno a příjmení
+idp-username-password-form-help-text=Proveďte spárování účtu přihlášením.
+
+finalDeletionConfirmation=Pokud svůj účet odstraníte, nemůže být obnoven. Pro zachování účtu klikněte na tlačítko Zrušit.
+irreversibleAction=Tuto akci nelze vzít zpět
+deleteAccountConfirm=Potvrzení odstranění účtu
+
+deletingImplies=Odstranění vašeho účtu znamená:
+errasingData=Smazání všech vašich dat
+loggingOutImmediately=Okamžité odhlášení
+accountUnusable=Další použití aplikace s tímto účtem nebude možné
+userDeletedSuccessfully=Uživatel úspěšně odstraněn
+
+access-denied=Přístup odepřen
+access-denied-when-idp-auth=Přístup odepřen při přihlášení pomocí {0}
+
+frontchannel-logout.title=Odhlášení
+frontchannel-logout.message=Odhlašujete se z následujících aplikací
+logoutConfirmTitle=Odhlašování
+logoutConfirmHeader=Chcete se odhlásit?
+doLogout=Odhlásit
+
+readOnlyUsernameMessage=Nemůžete aktualizovat své uživatelské jméno, protože je pouze pro čtení.
diff --git a/themes/custom-theme-template/login/messages/messages_da.properties b/themes/custom-theme-template/login/messages/messages_da.properties
new file mode 100644
index 0000000000000000000000000000000000000000..603393c1b1d9d1f770f493c574feec613c051c8b
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_da.properties
@@ -0,0 +1,345 @@
+doLogIn=Log ind
+doRegister=Registrer
+doRegisterSecurityKey=Registrer
+doCancel=Annuller
+doSubmit=Indsend
+doYes=Ja
+doNo=Nej
+doContinue=Fortsæt
+doIgnore=Ignorer
+doAccept=Accepter
+doDecline=Afslå
+doForgotPassword=Glemt adgangskode?
+doClickHere=Klik her
+doImpersonate=Efterlign
+kerberosNotConfigured=Kerberos er ikke konfigureret
+kerberosNotConfiguredTitle=Kerberos er ikke konfigureret
+bypassKerberosDetail=Enten er du ikke logget ind via Kerberos eller også er din browser ikke sat op til Kerberos login. Tryk fortsæt for at logge ind på anden vis
+kerberosNotSetUp=Kerberos er ikke sat op. Du kan ikke logge ind.
+registerTitle=Registrer
+loginTitle=Log ind i {0}
+loginTitleHtml={0}
+impersonateTitle={0} Efterlign bruger
+impersonateTitleHtml=<strong>{0}</strong> Efterlign bruger
+realmChoice=Rige
+unknownUser=Ukendt bruger
+loginTotpTitle=Mobil Godkendelses Opsætning
+loginProfileTitle=Opdater brugerinformationer
+loginTimeout=Dit login tog for lang tid. Login processen vil nu begynde forfra.
+oauthGrantTitle=Giv adgang til {0}
+oauthGrantTitleHtml={0}
+errorTitle=Vi beklager...
+errorTitleHtml=Vi <strong>beklager</strong> ...
+emailVerifyTitle=Email verificering
+emailForgotTitle=Glemt din adgangskode?
+updatePasswordTitle=Opdater adgangskode
+codeSuccessTitle=Success kode
+codeErrorTitle=Fejl kode\: {0}
+displayUnsupported=Den ønskede skærmtype understøttes ikke
+browserRequired=Brwoseren skal logges ind
+browserContinue=Browser påkrævet for at kunne gennemføre login
+browserContinuePrompt=Åben browser for at fortsætte login? [j/n]:
+browserContinueAnswer=j
+
+termsTitle=Vilkår og betingelser
+termsText=<p>Vilkår og betingelser mangler at blive beskrevet</p>
+termsPlainText=Vilkår og betingelser mangler at blive beskrevet.
+
+recaptchaFailed=Ugyldig Recaptcha
+recaptchaNotConfigured=Recaptcha er påkrævet, men ikke konfigureret
+consentDenied=Samtykke afslået.
+
+noAccount=Ny bruger?
+username=Brugernavn
+usernameOrEmail=Brugernavn eller email
+firstName=Fornavn
+givenName=Fornavn
+fullName=Fulde navn
+lastName=Efternavn
+familyName=Efternavn
+email=Email
+password=Adgangskode
+passwordConfirm=Bekræft adgangskode
+passwordNew=Ny Adgangskode
+passwordNewConfirm=Bekræft ny adgangskode
+rememberMe=Husk mig
+authenticatorCode=Engangskode
+address=Adresse
+street=Vej
+locality=By
+region=Region
+postal_code=Postnummer
+country=Land
+emailVerified=Email verificeret
+gssDelegationCredential=GSS Delegation Credential
+
+profileScopeConsentText=Brugerprofil
+emailScopeConsentText=Email adresse
+addressScopeConsentText=Adresse
+phoneScopeConsentText=Telefonnummer
+offlineAccessScopeConsentText=Offline Adgang
+samlRoleListScopeConsentText=Mine roller
+
+loginTotpIntro=Du skal opsætte en Engangskodegenerator for at kunne tilgå denne konto.
+loginTotpStep1=Installer en af følgende applikationer på din mobil
+loginTotpStep2=Åben applikationen og skan stregkoden
+loginTotpStep3=Indtast engangskoden fra applikationen og tryk Indsend for at gennemføre opsætningen
+loginTotpManualStep2=Åben applikationen og indtast nøglen
+loginTotpManualStep3=Brug følgende konfigurations værdier hvis applikationen tillader det
+loginTotpUnableToScan=Kan du ikke skanne?
+loginTotpScanBarcode=Skan stregkode?
+loginOtpOneTime=Engangskode
+loginTotpType=Type
+loginTotpAlgorithm=Algoritme
+loginTotpDigits=Cifre
+loginTotpInterval=Interval
+loginTotpCounter=Tæller
+
+loginTotp.totp=Tidsbaseret
+loginTotp.hotp=Tællerbaseret
+
+oauthGrantRequest=Bevilger du disse adgangs privilegier?
+inResource=ind
+emailVerifyInstruction1=En email med instruktioner til, hvordan du verificerer din mail adresse er blevet sendt til dig.
+emailVerifyInstruction2=Har du ikke modtaget en verificerings kode i din inbox?
+emailVerifyInstruction3=for at gensende emailen.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=En email med instruktioner til hvordan du linker {0} konto {1} med din {2} konto er blevet sendt til dig.
+emailLinkIdp2=Har du ikke modtaget en verificerings kode i din inbox?
+emailLinkIdp3=for at gensende emailen.
+emailLinkIdp4=Hvis du allerede har verificeret din email i en anden browser
+emailLinkIdp5=for at fortsætte.
+
+backToLogin=&laquo; Tilbage til log ind
+
+emailInstruction=Indtast dit brugernavn eller email adresse, så sender vi instruktioner til dig om hvordan du angiver en ny adgangskode.
+
+copyCodeInstruction=Kopier denne kode og indsæt den i din applikation:
+
+pageExpiredTitle=Siden er udløbet
+pageExpiredMsg1=For at genstarte login processen
+pageExpiredMsg2=For at fortsætte login processen
+
+personalInfo=Personlig information:
+role_admin=Admin
+role_realm-admin=Rige Admin
+role_create-realm=Opret rige
+role_create-client=Opret klient
+role_view-realm=Se rige
+role_view-users=Se brugere
+role_view-applications=Se applikationer
+role_view-clients=Se klienter
+role_view-events=Se hændelser
+role_view-identity-providers=Se identitetsudbydere
+role_manage-realm=Administrer rige
+role_manage-users=Administrer brugere
+role_manage-applications=Administrer applikationer
+role_manage-identity-providers=Administrer identitetsudbydere
+role_manage-clients=Administrer klienter
+role_manage-events=Administrer hændelser
+role_view-profile=Se profil
+role_manage-account=Administrer konto
+role_manage-account-links=Administrer konto links
+role_read-token=Se token
+role_offline-access=Offline adgang
+client_account=Konto
+client_account-console=Kontokonsol
+client_security-admin-console=Sikkerhefds Admin Konsol
+client_admin-cli=Admin CLI
+client_realm-management=Rige administration
+client_broker=Broker
+
+invalidUserMessage=Ugyldig brugernavn eller adgangskode.
+invalidEmailMessage=Ugyldig email adresse.
+accountDisabledMessage=Kontoen er deaktiveret, kontakt en administrator.
+accountTemporarilyDisabledMessage=Kontoen er midlertidigt deaktiveret, kontakt en administrator eller prøv igen senere.
+expiredCodeMessage=Log ind tog for lang tid. Prøv igen.
+expiredActionMessage=Handlingen er udløbet. Fortsæt med log ind nu.
+expiredActionTokenNoSessionMessage=Handling udløbet.
+expiredActionTokenSessionExistsMessage=Handlingen er udløbet. Start venligst forfra.
+
+missingFirstNameMessage=Angiv fornavn.
+missingLastNameMessage=Angiv efternavn.
+missingEmailMessage=Angiv email adressse.
+missingUsernameMessage=Angiv brugernavn.
+missingPasswordMessage=Angiv password.
+missingTotpMessage=Angiv autentificerings kode.
+notMatchPasswordMessage=Passwords er ikke ens.
+
+invalidPasswordExistingMessage=Ugyldig eksisterende adgangskode.
+invalidPasswordBlacklistedMessage=Ugyldig adgangskode: Adgangskoden er sortlisted.
+invalidPasswordConfirmMessage=Adgangskoderne er ikke ens
+invalidTotpMessage=Ugyldig autentificerings kode.
+
+usernameExistsMessage=Brugernavnet eksisterer allerede.
+emailExistsMessage=Email adressen eksisterer allerede.
+
+federatedIdentityExistsMessage=Bruger med {0} {1} eksisterer allerede. Log ind i konto administration for at linke kontoen.
+
+confirmLinkIdpTitle=Kontoen eksisterer allerede
+federatedIdentityConfirmLinkMessage=Bruger med {0} {1} eksisterer allerede. Hvordan vil du fortsætte?
+federatedIdentityConfirmReauthenticateMessage=Log ind som {0} for at linke din konto med {1}
+confirmLinkIdpReviewProfile=Se profil
+confirmLinkIdpContinue=Tilføj til eksisterende konto
+
+configureTotpMessage=Du skal opsætte en Mobile Authenticator for at kunne aktivere din konto.
+updateProfileMessage=Du skal opdatere din brugerprofil for at kunne aktivere din konto.
+updatePasswordMessage=Du skal ændre din adgangskode for at kunne aktivere din konto.
+resetPasswordMessage=Du skal ændre din adgangskode.
+verifyEmailMessage=Du skal verificere din email adresse for at kunne aktivere din konto.
+linkIdpMessage=Du skal verificere din email adresse for at kunne kontoen med {0}.
+
+emailSentMessage=Du vil snarest modtage en email med yderligere instruktioner.
+emailSendErrorMessage=Kunne ikke sende email, prøv igen senere.
+
+accountUpdatedMessage=Din konto er blevet opdateret.
+accountPasswordUpdatedMessage=Din adgangskode er blevet opdateret.
+
+delegationCompleteHeader=Login lykkedes
+delegationCompleteMessage=Du kan nu lukke dette browser vindue og gå tilbage til din konsol applikation.
+delegationFailedHeader=Log ind fejlede
+delegationFailedMessage=Du kan nu lukke dette browser vindue og gå tilbage til din konsol applikation for at forsøge at logge ind igen.
+
+noAccessMessage=Ingen adgang
+
+invalidPasswordMinLengthMessage=Ugyldig adgangskode: minimum længde {0}.
+invalidPasswordMinDigitsMessage=Ugyldig adgangskode: skal minimum indeholde {0} tal.
+invalidPasswordMinLowerCaseCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} små bogstaver.
+invalidPasswordMinUpperCaseCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} store bogstaver.
+invalidPasswordMinSpecialCharsMessage=Ugyldig adgangskode: skal minimum indeholde {0} specialtegn.
+invalidPasswordNotUsernameMessage=Ugyldig adgangskode: må ikke være identisk med brugernavnet.
+invalidPasswordRegexPatternMessage=Ugyldig adgangskode: Ikke i stand til at matche regex mønstre.
+invalidPasswordHistoryMessage=Ugyldig adgangskode: må ikke være identisk med nogle af de seneste {0} adgangskoder.
+invalidPasswordGenericMessage=Ugyldig adgangskode: ny adgangskode matcher ikke vores adgangskode politikker.
+
+failedToProcessResponseMessage=Ude af stand til at processere svaret
+httpsRequiredMessage=HTTPS påkrævet
+realmNotEnabledMessage=Riget er ikke aktiveret
+invalidRequestMessage=Ugyldig Forespørgsel
+failedLogout=Logud fejlede
+unknownLoginRequesterMessage=Ukendt log ind forespørger
+loginRequesterNotEnabledMessage=Log ind forespørgeren er ikke aktiveret
+bearerOnlyMessage=Bearer-only applikationer må ikke foretage browser login
+standardFlowDisabledMessage=Klienten må ikke foretage browser login med den givne response_type. Standard flowet er deaktiveret for klienten.
+implicitFlowDisabledMessage=Klienten må ikke foretage browser login med den givne response_type. Implicit flowet er deaktiveret for klienten.
+
+invalidRedirectUriMessage=Ugyldig redirect uri
+unsupportedNameIdFormatMessage=Ikke understøttet NameIDFormat
+invalidRequesterMessage=Ugyldig forespørger
+registrationNotAllowedMessage=Registrering er ikke tilladt
+resetCredentialNotAllowedMessage=Reset Credential er ikke tilladt
+
+permissionNotApprovedMessage=Tilladelse ikke godkendt.
+noRelayStateInResponseMessage=Ingen relæ tilstand i svaret fra identitetsudbyderen.
+insufficientPermissionMessage=Utilstrækkelig tilladelse for at kunne linke identiter.
+couldNotProceedWithAuthenticationRequestMessage=Kunne ikke fortsætte med godkendelsesanmodning til identitetsudbyderen.
+couldNotObtainTokenMessage=Kunne ikke opnå token fra identitetsudbyder.
+unexpectedErrorRetrievingTokenMessage=Uventet fejl i forsøget på at hente token fra identitetsudbyder.
+unexpectedErrorHandlingResponseMessage=Uventet fejl i forsøget på at behandle svaret fra identitetsudbyder.
+identityProviderAuthenticationFailedMessage=Log ind fejlede. Kunne ikke logge ind ved identitetsudbyder.
+couldNotSendAuthenticationRequestMessage=Kunne ikke sende log ind forespørgsel til identitetsudbyder.
+unexpectedErrorHandlingRequestMessage=Uventet fejl under håndteringen af forespørgsel til identitetsudbyder.
+invalidAccessCodeMessage=Ugyldig adgangskode.
+sessionNotActiveMessage=Sessionen er ikke aktiv.
+invalidCodeMessage=Der opstod en fejl, log ind igen via din applikation.
+identityProviderUnexpectedErrorMessage=Uventet fejl under log ind ved identitetsudbyder
+identityProviderNotFoundMessage=Kunne ikke finde en identitetsudbyder med det angivede id.
+identityProviderLinkSuccess=Din email er nu verificeret. Gå tilbage til din oprindelige browser og fortsæt log ind derfra.
+staleCodeMessage=Siden er ikke længere gyldig, gå tilbage til din applikation og login igen
+realmSupportsNoCredentialsMessage=Riget understøtter ikke nogen legimatitionstype.
+credentialSetupRequired=Kan ikke logge ind. Legimatitionstype skal konfigureres.
+identityProviderNotUniqueMessage=Riget understøtter flere forskellige identitetsudbydere. Kunne ikke beslutte hvilken identitetsudbyder der skulle bruges til at logge ind med.
+emailVerifiedMessage=Din email adresse er verificeret.
+staleEmailVerificationLink=Linket du har klikket på er et gammelt udløbet link. Måske har du allerede verificeret din mailadresse?
+identityProviderAlreadyLinkedMessage=Forbundsidentitet returneret af {0} er allerede linket til en anden bruger.
+confirmAccountLinking=Bekræft sammenkobling af konto {0} fra identitetsudbyder {1} med din konto.
+confirmEmailAddressVerification=Bekræft gyldigheden af email adresse {0}.
+confirmExecutionOfActions=Udfør følgende handling(er)
+
+backToApplication=&laquo; Tilbage til applikation
+missingParameterMessage=Manglende parametre\: {0}
+clientNotFoundMessage=Klienten kunne ikke findes.
+clientDisabledMessage=Klienten er deaktiveret.
+invalidParameterMessage=Ugyldig parameter\: {0}
+alreadyLoggedIn=Du er allerede logget ind.
+differentUserAuthenticated=Du er allerede logget ind som en anden bruger ''{0}'' i denne session. Log venligst ud først.
+brokerLinkingSessionExpired=Har forespørgt kobling mellem mæglerkonti, men den nuværende session er ikke længere gyldig.
+
+proceedWithAction=&raquo; Tryk her for at fortsætte
+
+requiredAction.CONFIGURE_TOTP=Konfigurer OTP
+requiredAction.TERMS_AND_CONDITIONS=Vilkår og betingelser
+requiredAction.UPDATE_PASSWORD=Opdater Adgangskode
+requiredAction.UPDATE_PROFILE=Opdater Profil
+requiredAction.VERIFY_EMAIL=Verificer email adresse
+
+doX509Login=Du vil blive logget ind som\:
+clientCertificate=X509 client certificate\:
+noCertificate=[No Certificate]
+
+pageNotFound=Siden kunne ikke findes
+internalServerError=Der opstod en intern server fejl.
+
+console-username=Brugernavn:
+console-password=Adgangskode:
+console-otp=Engangskode:
+console-new-password=Ny Adgangskode:
+console-confirm-password=Bekræft Adgangskode:
+console-update-password=Du skal opdatere din adgangskode.
+console-verify-email=Du skal verificere din email adresse. En email er blevet sendt til {0} som indeholder en verificerings kode. Indtast koden i input feltet herunder.
+
+console-email-code=Email Kode:
+console-accept-terms=Accepter Vilkår? [j/n]:
+console-accept=j
+
+auth-username-form-display-name=Brugernavn
+auth-username-form-help-text=Start log ind ved at indtaste dit brugernavn
+auth-username-password-form-display-name=Brugernavn og adgangskode
+auth-username-password-form-help-text=Log ind ved at indtaste dit brugernavn og adgangskode
+
+doBack=Tilbage
+doTryAgain=Prøv igen
+doTryAnotherWay=Prøv på en anden måde
+rolesScopeConsentText=Brugerroller
+restartLoginTooltip=Start log ind forfra
+loginTotpStep3DeviceName=Angiv et udstyrsnavn for at kunne holde rede på udstyr med engangskode.
+loginCredential=Credential
+loginTotpDeviceName=Udstyrsnavn
+loginChooseAuthenticator=Vælg metode til log ind
+requiredFields=Nødvendige felter
+invalidUsernameMessage=Ugyldigt brugernavn.
+invalidUsernameOrEmailMessage=Ugyldigt brugernavn eller email.
+invalidPasswordMessage=Ugyldig adangskode.
+missingTotpDeviceNameMessage=Angiv venligst et udstyrsnavn.
+nestedFirstBrokerFlowMessage={0} brugeren {1} er ikke forbundet til nogen kendt bruger.
+locale_cs=Čeština
+locale_pl=Polish
+openshift.scope.user_info=Brugerinformation
+openshift.scope.user_check-access=Brugeradgangsinformation
+openshift.scope.user_full=Fuld adgang
+openshift.scope.list-projects=Vis liste af projekter
+saml.post-form.title=Log ind Redirect
+saml.post-form.message=Redirigerer, vent venligst.
+saml.post-form.js-disabled=JavaScript er disabled. Vi anbefaler stærkt at enbable det. Klik på knappen nedenfor for at fortsætte.
+otp-display-name=Engangskodegenerator
+otp-help-text=Indtast en godkendelseskode fra engangskodegeneratoren.
+password-display-name=Adgangskode
+password-help-text=Log ind ved at indtaste din adgangskode.
+webauthn-display-name=Sikkerhedsnøgle
+webauthn-help-text=Brug din sikkerhedsnøgle for at logge ind.
+webauthn-passwordless-display-name=Sikkerhedsnøgle
+webauthn-passwordless-help-text=Brug din sikkerhedsnøgle for at logge ind uden adgangskode.
+webauthn-login-title=Log ind med sikkerhedsnøgle
+webauthn-registration-title=Registrering af Sikkerhedsnøgle
+webauthn-available-authenticators=Tilgængelige log ind måder
+webauthn-error-title=Sikkerhedsnøglefejl
+webauthn-error-registration=Det lykkedes ikke at registrere din sikkerhedsnøgle.
+webauthn-error-api-get=Det lykkedes ikke at logge ind med din sikkerhedsnøgle.
+webauthn-error-different-user=Den første authenticatede bruger er ikke den der er authenticated med sikkerhedsnøglen.
+webauthn-error-auth-verification=Resultatet fra log ind med sikkerhedsnøgle er ugyldigt.
+webauthn-error-register-verification=Resultatet fra registrering med sikkerhedsnøglen er ugyldigt.
+webauthn-error-user-not-found=Ukendt bruger authenticated med sikkerhedsnøglen.
+identity-provider-redirector=Forbind med en anden Identitetsudbyder
+
+readOnlyUsernameMessage=Du kan ikke opdatere dit brugernavn da det er read-only.
diff --git a/themes/custom-theme-template/login/messages/messages_de.properties b/themes/custom-theme-template/login/messages/messages_de.properties
new file mode 100755
index 0000000000000000000000000000000000000000..d59615c4c9ee726228cb2aca5fd86d36ec986e51
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_de.properties
@@ -0,0 +1,423 @@
+doLogIn=Anmelden
+doRegister=Registrieren
+doRegisterSecurityKey=Registrieren
+doCancel=Abbrechen
+doSubmit=Absenden
+doBack=Zurück
+doYes=Ja
+doNo=Nein
+doContinue=Weiter
+doIgnore=Ignorieren
+doAccept=Annehmen
+doDecline=Ablehnen
+doForgotPassword=Passwort vergessen?
+doClickHere=Hier klicken
+doImpersonate=Identitätswechsel
+doTryAgain=Erneut versuchen
+doTryAnotherWay=Einen anderen Weg versuchen
+doConfirmDelete=Löschung bestätigen
+errorDeletingAccount=Beim Löschen des Kontos ist ein Fehler aufgetreten
+deletingAccountForbidden=Sie haben nicht genügend Berechtigungen, um Ihr eigenes Konto zu löschen, wenden Sie sich an einen Administrator.
+kerberosNotConfigured=Kerberos ist nicht konfiguriert.
+kerberosNotConfiguredTitle=Kerberos nicht konfiguriert
+bypassKerberosDetail=Sie sind entweder nicht mit Kerberos angemeldet, oder Ihr Browser ist nicht für eine Anmeldung mit Kerberos konfiguriert. Bitte klicken Sie auf Weiter, damit Sie sich auf eine andere Art anmelden können
+kerberosNotSetUp=Kerberos ist nicht konfiguriert. Sie können sich damit nicht anmelden.
+registerTitle=Registrierung
+loginAccountTitle=Bei Ihrem Konto anmelden
+loginTitle=Anmeldung bei {0}
+loginTitleHtml={0}
+impersonateTitle={0} Identitätswechsel
+impersonateTitleHtml=<strong>{0}</strong> Identitätswechsel
+realmChoice=Realm
+unknownUser=Unbekannter Benutzer
+loginTotpTitle=Mehrfachauthentifizierung konfigurieren
+loginProfileTitle=Benutzerkonto Informationen aktualisieren
+loginTimeout=Sie haben zu lange gebraucht, um sich anzumelden. Bitte versuchen Sie es erneut.
+reauthenticate=Zum Fortsetzen bitte erneut anmelden
+oauthGrantTitle=OAuth gewähren
+oauthGrantTitleHtml={0}
+errorTitle=Es ist ein Fehler aufgetreten.
+errorTitleHtml=Es ist ein Fehler aufgetreten.
+emailVerifyTitle=E-Mail verifizieren
+emailForgotTitle=Passwort vergessen?
+updatePasswordTitle=Passwort aktualisieren
+codeSuccessTitle=Erfolgreicher Code
+codeErrorTitle=Fehlercode\: {0}
+displayUnsupported=Angeforderter Anzeigetyp wird nicht unterstützt
+browserRequired=Browser für die Anmeldung erforderlich
+browserContinue=Browser erforderlich, um die Anmeldung abzuschließen
+browserContinuePrompt=Browser öffnen und Anmeldung fortsetzen? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Bedingungen und Konditionen
+termsTitleHtml=Bedingungen und Konditionen
+termsText=<p>Zu definierende Bedingungen und Konditionen</p>
+
+recaptchaFailed=Ungültiges Recaptcha
+recaptchaNotConfigured=Recaptcha Eingabe ist erforderlich, jedoch noch nicht konfiguriert.
+consentDenied=Zustimmung verweigert.
+
+noAccount=Neuer Benutzer?
+username=Benutzername
+usernameOrEmail=Benutzername oder E-Mail
+firstName=Vorname
+givenName=Vorname
+fullName=Voller Name
+lastName=Nachname
+familyName=Nachname
+email=E-Mail
+password=Passwort
+passwordConfirm=Passwort bestätigen
+passwordNew=Neues Passwort
+passwordNewConfirm=Neues Passwort bestätigen
+rememberMe=Angemeldet bleiben
+authenticatorCode=One-time Code
+address=Adresse
+street=Straße
+locality=Stadt oder Ortschaft
+region=Staat, Provinz, Region
+postal_code=PLZ
+country=Land
+emailVerified=E-Mail verifiziert
+website=Website
+phoneNumber=Telefonnummer
+phoneNumberVerified=Telefonnummer verifiziert
+gender=Geschlecht
+birthday=Geburtsdatum
+zoneinfo=Zeitzone
+gssDelegationCredential=GSS delegierte Berechtigung
+logoutOtherSessions=Von anderen Geräten abmelden
+
+profileScopeConsentText=Nutzerkonto
+emailScopeConsentText=E-Mail Adresse
+addressScopeConsentText=Adresse
+phoneScopeConsentText=Telefonnummer
+offlineAccessScopeConsentText=Offline Zugriff
+samlRoleListScopeConsentText=Meine Rollen
+rolesScopeConsentText=Nutzerrollen
+
+restartLoginTooltip=Login neu starten
+
+loginTotpIntro=Sie müssen einen One Time Passwort-Generator einrichten, um auf dieses Konto zugreifen zu können.
+loginTotpStep1=Installieren Sie eine der folgenden Applikationen auf Ihrem Smartphone:
+loginTotpStep2=Öffnen Sie die Applikation und scannen Sie den QR-Code.
+loginTotpStep3=Geben Sie den von der Applikation generierten One-time Code ein und klicken Sie auf Absenden.
+loginTotpStep3DeviceName=Geben Sie einen Gerätenamen an, um die Verwaltung Ihrer OTP-Geräte zu erleichtern.
+loginTotpManualStep2=Öffnen Sie die Applikation und geben Sie den folgenden Schlüssel ein.
+loginTotpManualStep3=Verwenden Sie die folgenden Konfigurationswerte, falls Sie diese für die Applikation anpassen können:
+loginTotpUnableToScan=Sie können den QR-Code nicht scannen?
+loginTotpScanBarcode=QR-Code scannen?
+loginCredential=Anmeldeinformation
+loginOtpOneTime=One-time code
+loginTotpType=Typ
+loginTotpAlgorithm=Algorithmus
+loginTotpDigits=Ziffern
+loginTotpInterval=Intervall
+loginTotpCounter=Zähler
+loginTotpDeviceName=Gerätename
+
+loginTotp.totp=zeitbasiert (time-based)
+loginTotp.hotp=zählerbasiert (counter-based)
+
+loginChooseAuthenticator=Login Methode auswählen
+
+oauthGrantRequest=Wollen Sie diese Zugriffsrechte gewähren?
+inResource=in
+
+emailVerifyInstruction1=Eine E-Mail mit weiteren Anweisungen wurde an Sie versendet.
+emailVerifyInstruction2=Falls Sie keine E-Mail erhalten haben, dann können Sie
+emailVerifyInstruction3=um eine neue E-Mail versenden zu lassen.
+
+emailLinkIdpTitle={0} verknüpfen
+emailLinkIdp1=Eine E-Mail mit weiteren Anweisungen um {0} Konto {1} mit Ihrem {2} Konto zu verknüpfen wurde an Sie versendet.
+emailLinkIdp2=Sie haben keinen Code in Ihrer E-Mail erhalten?
+emailLinkIdp3=um eine neue E-Mail versenden zu lassen.
+emailLinkIdp4=Wenn Sie die E-Mail bereits in einem anderen Browser verifiziert haben
+emailLinkIdp5=um fortzufahren.
+
+backToLogin=&laquo; Zurück zur Anmeldung
+
+emailInstruction=Geben Sie Ihren Benutzernamen oder Ihre E-Mail Adresse ein und klicken Sie auf Absenden. Danach werden wir Ihnen eine E-Mail mit weiteren Instruktionen zusenden.
+emailInstructionUsername=Geben Sie Ihren Benutzernamen ein und klicken Sie auf Absenden. Danach werden wir Ihnen eine E-Mail mit weiteren Instruktionen zusenden.
+
+copyCodeInstruction=Bitte kopieren Sie den folgenden Code und fügen ihn in die Applikation ein\:
+
+pageExpiredTitle=Diese Seite ist nicht mehr gültig.
+pageExpiredMsg1=Um den Anmeldevorgang neu zu starten
+pageExpiredMsg2=Um den Anmeldevorgang fortzusetzen
+
+personalInfo=Persönliche Informationen:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Realm erstellen
+role_create-client=Client erstellen
+role_view-realm=Realm ansehen
+role_view-users=Benutzer ansehen
+role_view-applications=Applikationen ansehen
+role_view-clients=Clients ansehen
+role_view-events=Events ansehen
+role_view-identity-providers=Identity Provider ansehen
+role_manage-realm=Realm verwalten
+role_manage-users=Benutzer verwalten
+role_manage-applications=Applikationen verwalten
+role_manage-identity-providers=Identity Provider verwalten
+role_manage-clients=Clients verwalten
+role_manage-events=Events verwalten
+role_view-profile=Profile ansehen
+role_manage-account=Profile verwalten
+role_manage-account-links=Profil-Links verwalten
+role_read-token=Token lesen
+role_offline-access=Offline-Zugriff
+client_account=Clientkonto
+client_account-console=Accountkonsole
+client_security-admin-console=Security Adminkonsole
+client_admin-cli=Admin CLI
+client_realm-management=Realm-Management
+client_broker=Broker
+
+requiredFields=Benötigte Felder
+
+invalidUserMessage=Ungültiger Benutzername oder Passwort.
+invalidUsernameMessage=Ungültiger Benutzername.
+invalidUsernameOrEmailMessage=Ungültiger Benutzername oder E-Mail.
+invalidPasswordMessage=Ungültiges Passwort.
+invalidEmailMessage=Ungültige E-Mail-Adresse.
+accountDisabledMessage=Ihr Benutzerkonto ist gesperrt, bitte kontaktieren Sie den Admin.
+accountTemporarilyDisabledMessage=Ihr Benutzerkonto ist temporär gesperrt. Bitte kontaktieren Sie den Admin oder versuchen Sie es später noch einmal.
+expiredCodeMessage=Zeitüberschreitung bei der Anmeldung. Bitte melden Sie sich erneut an.
+expiredActionMessage=Die Aktion ist nicht mehr gültig. Bitte fahren Sie nun mit der Anmeldung fort.
+expiredActionTokenNoSessionMessage=Die Aktion ist nicht mehr gültig.
+expiredActionTokenSessionExistsMessage=Die Aktion ist nicht mehr gültig. Bitte fangen Sie noch einmal an.
+
+missingFirstNameMessage=Bitte geben Sie einen Vornamen ein.
+missingLastNameMessage=Bitte geben Sie einen Nachnamen ein.
+missingEmailMessage=Bitte geben Sie eine E-Mail-Adresse ein.
+missingUsernameMessage=Bitte geben Sie einen Benutzernamen ein.
+missingPasswordMessage=Bitte geben Sie ein Passwort ein.
+missingTotpMessage=Bitte geben Sie den One-time Code ein.
+missingTotpDeviceNameMessage=Bitte geben Sie einen Gerätenamen ein.
+notMatchPasswordMessage=Passwörter sind nicht identisch.
+
+invalidPasswordExistingMessage=Das aktuelle Passwort ist ungültig.
+invalidPasswordBlacklistedMessage=Ungültiges Passwort: Das Passwort steht auf der Blockliste (schwarzen Liste).
+invalidPasswordConfirmMessage=Die Passwortbestätigung ist nicht identisch.
+invalidTotpMessage=Ungültiger One-time Code.
+
+usernameExistsMessage=Benutzername existiert bereits.
+emailExistsMessage=E-Mail existiert bereits.
+
+federatedIdentityExistsMessage=Ein Benutzer mit {0} {1} existiert bereits. Bitte melden Sie sich an der Benutzerkontoverwaltung an um den Benutzer zu verknüpfen.
+
+confirmLinkIdpTitle=Das Benutzerkonto existiert bereits.
+federatedIdentityConfirmLinkMessage=Ein Benutzer mit {0} {1} existiert bereits. Wie möchten Sie fortfahren?
+federatedIdentityConfirmReauthenticateMessage=Anmelden um das Benutzerkonto mit {0} zu verknüpfen
+nestedFirstBrokerFlowMessage=Der {0} Benutzer {1} ist mit keinem bekannten Benutzer verknüpfen.
+confirmLinkIdpReviewProfile=Benutzerkonto überprüfen
+confirmLinkIdpContinue=Zu einem bestehenden Benutzerkonto hinzufügen
+
+configureTotpMessage=Sie müssen eine Mehrfachauthentifizierung einrichten, um das Benutzerkonto zu aktivieren.
+updateProfileMessage=Sie müssen Ihr Benutzerkonto aktualisieren, um das Benutzerkonto zu aktivieren.
+updatePasswordMessage=Sie müssen Ihr Passwort ändern, um das Benutzerkonto zu aktivieren.
+resetPasswordMessage=Sie müssen Ihr Passwort ändern.
+verifyEmailMessage=Sie müssen Ihre E-Mail-Adresse verifizieren, um das Benutzerkonto zu aktivieren.
+linkIdpMessage=Sie müssen Ihre E-Mail-Adresse verifizieren, um Ihr Benutzerkonto mit {0} zu verknüpfen.
+
+emailSentMessage=Sie sollten in Kürze eine E-Mail mit weiteren Instruktionen erhalten.
+emailSendErrorMessage=Die E-Mail konnte nicht versendet werden. Bitte versuchen Sie es später noch einmal.
+
+accountUpdatedMessage=Ihr Benutzerkonto wurde aktualisiert.
+accountPasswordUpdatedMessage=Ihr Passwort wurde aktualisiert.
+
+delegationCompleteHeader=Login Erfolgreich
+delegationCompleteMessage=Sie können dieses Browserfenster schließen und zu Ihrer Konsolenanwendung zurückkehren.
+delegationFailedHeader=Login Fehlgeschlagen
+delegationFailedMessage=Sie können dieses Browserfenster schließen und zu Ihrer Konsolenanwendung zurückkehren und versuchen, sich erneut anzumelden.
+
+noAccessMessage=Kein Zugriff
+
+invalidPasswordMinLengthMessage=Ungültiges Passwort: Es muss mindestens {0} Zeichen lang sein.
+invalidPasswordMinDigitsMessage=Ungültiges Passwort: Es muss mindestens {0} Zahl(en) beinhalten.
+invalidPasswordMinLowerCaseCharsMessage=Ungültiges Passwort\: Es muss mindestens {0} Kleinbuchstaben beinhalten.
+invalidPasswordMinUpperCaseCharsMessage=Ungültiges Passwort: Es muss mindestens {0} Großbuchstaben beinhalten.
+invalidPasswordMinSpecialCharsMessage=Ungültiges Passwort: Es muss mindestens {0} Sonderzeichen beinhalten.
+invalidPasswordNotUsernameMessage=Ungültiges Passwort: Es darf nicht gleich sein wie der Benutzername.
+invalidPasswordNotEmailMessage=Ungültiges Passwort: darf nicht identisch mit der E-Mail-Adresse sein.
+invalidPasswordRegexPatternMessage=Ungültiges Passwort: Es entspricht nicht dem Regex-Muster.
+invalidPasswordHistoryMessage=Ungültiges Passwort: Es darf nicht einem der letzten {0} Passwörter entsprechen.
+invalidPasswordGenericMessage=Ungültiges Passwort: Es verletzt die Passwort-Richtlinien.
+
+failedToProcessResponseMessage=Konnte Antwort nicht verarbeiten.
+httpsRequiredMessage=HTTPS erforderlich.
+realmNotEnabledMessage=Realm nicht aktiviert.
+invalidRequestMessage=Ungültiger Request.
+successLogout=Sie sind abgemeldet.
+failedLogout=Logout fehlgeschlagen.
+unknownLoginRequesterMessage=Ungültiger Login Requester.
+loginRequesterNotEnabledMessage=Login Requester nicht aktiviert.
+bearerOnlyMessage=Bearer-only Clients können sich nicht via Browser anmelden.
+standardFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Standard Flow ist für diesen Client deaktiviert.
+implicitFlowDisabledMessage=Client darf sich mit diesem response_type nicht via Browser anmelden. Implicit Flow ist für diesen Client deaktiviert.
+invalidRedirectUriMessage=Ungültige Redirect Uri.
+unsupportedNameIdFormatMessage=Nicht unterstütztes NameIDFormat.
+invalidRequesterMessage=Ungültiger Requester.
+registrationNotAllowedMessage=Registrierung nicht erlaubt.
+resetCredentialNotAllowedMessage=Reset Credential nicht erlaubt.
+
+permissionNotApprovedMessage=Berechtigung nicht bestätigt.
+noRelayStateInResponseMessage=Kein Relay State in der Antwort von Identity Provider.
+insufficientPermissionMessage=Nicht genügend Rechte, um die Identität zu verknüpfen.
+couldNotProceedWithAuthenticationRequestMessage=Konnte die Authentifizierungsanfrage nicht weiter verarbeiten.
+couldNotObtainTokenMessage=Konnte kein Token vom Identity Provider erhalten.
+unexpectedErrorRetrievingTokenMessage=Unerwarteter Fehler während dem Empfang des Tokens vom Identity Provider.
+unexpectedErrorHandlingResponseMessage=Unerwarteter Fehler während der Bearbeitung der Antwort vom Identity Provider.
+identityProviderAuthenticationFailedMessage=Authentifizierung fehlgeschlagen. Authentifizierung mit dem Identity Provider nicht möglich.
+couldNotSendAuthenticationRequestMessage=Konnte Authentifizierungsanfrage nicht an den Identity Provider senden.
+unexpectedErrorHandlingRequestMessage=Unerwarteter Fehler während der Bearbeitung der Anfrage an den Identity Provider.
+invalidAccessCodeMessage=Ungültiger Access-Code.
+sessionNotActiveMessage=Session nicht aktiv.
+invalidCodeMessage=Ungültiger Code, bitte melden Sie sich erneut über die Applikation an.
+cookieNotFoundMessage=Cookie konnte nicht gefunden werden. Bitte stellen Sie sicher, dass Cookies in Ihrem Browser aktiviert sind.
+identityProviderUnexpectedErrorMessage=Unerwarteter Fehler während der Authentifizierung mit dem Identity Provider.
+identityProviderMissingStateMessage=Fehlender state Parameter in der Antwort vom Identitätsanbieter.
+identityProviderNotFoundMessage=Konnte keinen Identity Provider zu der Identität finden.
+identityProviderLinkSuccess=Sie haben Ihre E-Mail-Adresse erfolgreich verifiziert. Bitte kehren Sie zu Ihrem ursprünglichen Browser zurück und fahren Sie dort mit der Anmeldung fort. 
+staleCodeMessage=Diese Seite ist nicht mehr gültig, bitte kehren Sie zu Ihrer Applikation zurük und melden Sie sich erneut an.
+realmSupportsNoCredentialsMessage=Realm unterstützt keine Credential Typen.
+credentialSetupRequired=Anmeldung nicht möglich, Einrichtung der Anmeldeinformationen erforderlich.
+identityProviderNotUniqueMessage=Der Realm unterstützt mehrere Identity Provider. Es konnte kein eindeutiger Identity Provider zum Authentifizieren gewählt werden.
+emailVerifiedMessage=Ihre E-Mail-Adresse wurde erfolgreich verifiziert.
+staleEmailVerificationLink=Der von Ihnen angeklickte Link ist nicht mehr gültig. Haben Sie Ihre E-Mail-Adresse eventuell bereits verifiziert?
+identityProviderAlreadyLinkedMessage=Die Identität welche von dem Identity Provider zurückgegeben wurde ist bereits mit einem anderen Benutzer verknüpft.
+confirmAccountLinking=Bestätigen Sie den Account {0} des Identity Provider {1} mit Ihrem Account zu verknüpfen.
+confirmEmailAddressVerification=Bestätigen Sie, dass die E-Mail-Adresse {0} gültig ist.
+confirmExecutionOfActions=Führen Sie die folgende(n) Aktion(en) aus
+
+backToApplication=&laquo; Zurück zur Applikation
+missingParameterMessage=Fehlender Parameter\: {0}
+clientNotFoundMessage=Client nicht gefunden.
+clientDisabledMessage=Client deaktiviert.
+invalidParameterMessage=Ungültiger Parameter\: {0}
+alreadyLoggedIn=Sie sind bereits angemeldet.
+differentUserAuthenticated=Sie sind in dieser Session bereits mit einem anderen Benutzer ''{0}'' angemeldet. Bitte melden Sie sich zuerst ab.
+brokerLinkingSessionExpired=Broker Account Linking angefordert; Ihre Session ist allerdings nicht mehr gültig.
+proceedWithAction=» Klicken Sie hier um fortzufahren
+
+requiredAction.CONFIGURE_TOTP=Mehrfachauthentifizierung konfigurieren
+requiredAction.TERMS_AND_CONDITIONS=Bedingungen und Konditionen
+requiredAction.UPDATE_PASSWORD=Passwort aktualisieren
+requiredAction.UPDATE_PROFILE=Profil aktualisieren
+requiredAction.VERIFY_EMAIL=E-Mail-Adresse verifizieren
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Wiederherstellungscodes einrichten
+requiredAction.webauthn-register-passwordless=Kennwortlose Authentifizierung einrichten
+
+doX509Login=Sie werden angemeldet als\:
+clientCertificate=X509 Client Zertifikat\:
+noCertificate=[Kein Zertifikat]
+
+
+pageNotFound=Seite nicht gefunden
+internalServerError=Es ist ein interner Server-Fehler aufgetreten
+
+console-username=Benutzername:
+console-password=Passwort:
+console-otp=One Time Passwort:
+console-new-password=Neues Passwort:
+console-confirm-password=Passwort bestätigen:
+console-update-password=Eine Aktualisierung Ihres Passworts ist erforderlich.
+console-verify-email=Sie müssen Ihre E-Mail-Adresse verifizieren.  Wir haben eine E-Mail an {0} gesendet, die einen Verifizierungscode enthält.  Bitte geben Sie diesen Code in das untenstehende Eingabefeld ein.
+console-email-code=E-Mail Code:
+console-accept-terms=Nutzungsbedingungen akzeptieren? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=Nutzerinformation
+openshift.scope.user_check-access=Benutzerzugriffsinformationen
+openshift.scope.user_full=Voller Zugriff
+openshift.scope.list-projects=Projekte auflisten
+
+# SAML authentication
+saml.post-form.title=Authentifizierungsumleitung
+saml.post-form.message=Sie werden weitergeleitet, bitte warten.
+saml.post-form.js-disabled=JavaScript ist deaktiviert. Wir empfehlen dringend, es zu aktivieren. Klicken Sie auf die Schaltfläche unten, um fortzufahren. 
+
+#authenticators
+otp-display-name=Authenticator-Anwendung
+otp-help-text=Eingabe eines Verifizierungscodes aus der Authenticator-Anwendung.
+password-display-name=Passwort
+password-help-text=Melden Sie sich an, indem Sie Ihr Passwort eingeben.
+auth-username-form-display-name=Benutzername
+auth-username-form-help-text=Anmelden durch Eingabe des Benutzernamens
+auth-username-password-form-display-name=Benutzername und Passwort
+auth-username-password-form-help-text=Anmelden, indem Sie Ihren Benutzernamen und Ihr Passwort eingeben.
+error-reset-otp-missing-id=Bitte wählen Sie eine OTP Konfiguration aus.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Wiederherstellungscode
+auth-recovery-authn-code-form-help-text=Geben Sie einen Wiederherstellungscode aus einer zuvor erstellten Liste ein.
+auth-recovery-code-info-message=Geben Sie den angegebenen Wiederherstellungscode ein.
+auth-recovery-code-prompt=Wiederherstellungscode #{0}
+auth-recovery-code-header=Anmeldung mit einem Wiederherstellungscode
+recovery-codes-error-invalid=Ungültiger Wiederherstellungscode
+recovery-code-config-header=Wiederherstellungscode
+recovery-code-config-warning-title=Diese Wiederherstellungscodes werden nach Verlassen dieser Seite nicht mehr angezeigt
+recovery-code-config-warning-message=Drucken Sie sie aus, laden Sie sie herunter oder kopieren Sie sie in einen Passwort-Manager und speichern Sie sie. Wenn Sie diese Einrichtung abbrechen, werden die Wiederherstellungscodes von Ihrem Konto entfernt.
+recovery-codes-print=Drucken
+recovery-codes-download=Herunterladen
+recovery-codes-copy=Kopieren
+recovery-codes-copied=Kopiert
+recovery-codes-confirmation-message=Ich habe diese Codes an einem sicheren Ort gespeichert
+recovery-codes-action-complete=Fertigstellen
+recovery-codes-action-cancel=Abbrechen
+recovery-codes-download-file-header=Bewahren Sie diese Wiederherstellungscodes an einem sicheren Ort auf.
+recovery-codes-download-file-description=Wiederherstellungscodes sind einmalig verwendbare Passwörter, mit denen Sie sich bei Ihrem Konto anmelden können, wenn Sie keinen Zugriff auf Ihren Authentifikator haben.
+recovery-codes-download-file-date= Diese Codes wurden generiert am
+recovery-codes-label-default=Wiederherstellungscodes
+
+# WebAuthn
+webauthn-display-name=Security-Token
+webauthn-help-text=Verwenden Sie Ihr Security-Token zur Anmeldung.
+webauthn-passwordless-display-name=Security-Token
+webauthn-passwordless-help-text=Verwenden Sie Ihr Security-Token zur kennwortlosen Anmeldung.
+webauthn-login-title=Security-Token Anmeldung
+webauthn-registration-title=Security-Token Registrierung
+webauthn-available-authenticators=Verfügbare Authentifikatoren
+webauthn-unsupported-browser-text=WebAuthn wird von diesem Browser nicht unterstützt. Versuchen Sie es mit einem anderen oder wenden Sie sich an Ihren Administrator.
+webauthn-doAuthenticate=Anmelden mit Security-Token
+
+# WebAuthn Error
+webauthn-error-title=Security-Token Fehler
+webauthn-error-registration=Fehler beim Registrieren Ihres Security-Tokens.<br/> {0}
+webauthn-error-api-get=Fehler beim Authentifizieren mit dem Security-Token.<br/> {0}
+webauthn-error-different-user=Der erste authentifizierte Benutzer ist nicht derjenige, der durch das Security-Token authentifiziert wurde.
+webauthn-error-auth-verification=Das Ergebnis der Security-Token Authentifizierung ist ungültig.<br/> {0}
+webauthn-error-register-verification=Das Ergebnis der Security-Token Registrierung ist ungültig.<br/> {0}
+webauthn-error-user-not-found=Unbekannter Benutzer, der mit dem Security-Token authentifiziert wurde.
+
+# Identity provider
+identity-provider-redirector=Mit einem anderen Indentitätsprovider verbinden
+identity-provider-login-label=Oder anmelden mit
+idp-email-verification-display-name=E-Mail Verifizierung
+idp-email-verification-help-text=Bestätigen Sie Ihr Benutzerkonto über den Empfang einer E-Mail
+idp-username-password-form-display-name=Passwort Verifizierung
+idp-username-password-form-help-text=Bestätigen Sie Ihr Benutzerkonto mit Benutzername und Passwort
+
+finalDeletionConfirmation=Wenn Sie Ihr Konto löschen, kann es nicht wiederhergestellt werden. Um Ihr Konto zu behalten, klicken Sie auf Abbrechen.
+irreversibleAction=Diese Aktion ist unwiderruflich
+deleteAccountConfirm=Löschung des Kontos bestätigen
+
+deletingImplies=Die Löschung Ihres Kontos bedeutet:
+errasingData=Löschen aller Ihrer Daten
+loggingOutImmediately=Sofortige Abmeldung
+accountUnusable=Eine spätere Nutzung der Anwendung ist mit diesem Konto nicht mehr möglich
+userDeletedSuccessfully=Nutzer erfolgreich gelöscht
+
+access-denied=Zugriff verweigert
+
+frontchannel-logout.title=Abmelden
+frontchannel-logout.message=Sie melden sich von folgenden Anwendungen ab
+logoutConfirmTitle=Abmelden
+logoutConfirmHeader=Wollen Sie sich abmelden?
+doLogout=Abmelden
+
+readOnlyUsernameMessage=Sie können Ihren Benutzernamen nicht ändern, da er schreibgeschützt ist.
diff --git a/themes/custom-theme-template/login/messages/messages_el.properties b/themes/custom-theme-template/login/messages/messages_el.properties
new file mode 100644
index 0000000000000000000000000000000000000000..178ccb2f116fbe5e6546f70d3089f447443eeae0
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_el.properties
@@ -0,0 +1,468 @@
+doLogIn=Είσοδος
+doRegister=Εγγραφή
+doRegisterSecurityKey=Εγγραφή
+doCancel=Ακύρωση
+doSubmit=Εφαρμογή
+doBack=Επιστροφή
+doYes=Ναι
+doNo=Όχι
+doContinue=Συνέχεια
+doIgnore=Αγνόηση
+doAccept=Αποδοχή
+doDecline=Απόρριψη
+doForgotPassword=Ξεχάσατε το κωδικό;
+doClickHere=Πατήστε Εδώ
+doImpersonate=Προσποίηση
+doTryAgain=Δοκιμή Ξανά
+doTryAnotherWay=Δοκιμή με άλλη μέθοδο
+doConfirmDelete=Επιβεβαίωση διαγραφής
+errorDeletingAccount=Σφάλμα κατά τη διαγραφή του λογαριασμού
+deletingAccountForbidden=Δεν έχετε το δικαίωμα να διαγράψετε τον λογαριασμό σας, επικοινωνήστε με τον διαχειριστή.
+kerberosNotConfigured=Το Kerberos Δεν Έχει Ρυθμιστεί
+kerberosNotConfiguredTitle=Το Kerberos Δεν Έχει Ρυθμιστεί
+bypassKerberosDetail=Είτε δεν έχετε συνδεθεί μέσω Kerberos ή ο περιηγητής σας δεν έχει ρυθμιστεί για είσοδο με Kerberos.  Πατήστε για να συνεχίσετε την είσοδο με άλλες μεθόδους
+kerberosNotSetUp=Το Kerberos δεν έχει ρυθμιστεί.  Δεν μπορείτε να εισέλθετε.
+registerTitle=Εγγραφή
+loginAccountTitle=Είσοδος στο λογαριασμό σας
+loginTitle=Είσοδος στο {0}
+loginTitleHtml={0}
+impersonateTitle={0} Προσποίηση Χρήστη
+impersonateTitleHtml=<strong>{0}</strong> Προσποίηση Χρήστη
+realmChoice=Περιοχή
+unknownUser=Άγνωστος χρήστης
+loginTotpTitle=Ρύθμιση Authenticator Κινητού
+loginProfileTitle=Ενημέρωση Πληροφοριών Λογαριασμού
+loginIdpReviewProfileTitle=Ενημέρωση Πληροφοριών Λογαριασμού
+loginTimeout=Η προσπάθεια εισόδου σας έληξε. Είσοδος από την αρχή.
+reauthenticate=Για να συνεχίσετε παρακαλώ για αυθεντικοποίηση ξανά
+oauthGrantTitle=Δώστε Πρόσβαση στο {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Βεβαιωθείτε ότι εμπιστεύεστε το {0} μαθαίνοντας πως το {0} θα χειρίζεται τα δεδομένα σας.
+oauthGrantReview=Μπορείτε να ελέγξετε τα 
+oauthGrantTos=όροι της υπηρεσίας.
+oauthGrantPolicy=πολιτική ιδιωτικότητας.
+errorTitle=Ζητάμε συγνώμη...
+errorTitleHtml=Ζητάμε <strong>συγνώμη</strong> ...
+emailVerifyTitle=Πιστοποίηση Email
+emailForgotTitle=Ξεχάσατε το Κωδικό;
+updateEmailTitle=Ενημέρωση email
+emailUpdateConfirmationSentTitle=Στάλθηκε email επιβεβαίωσης
+emailUpdateConfirmationSent=Ένα email επιβεβαίωσης στάλθηκε στο {0}. Ακολουθήστε τις οδηγίες εκεί, ώστε να ολοκληρώσετε την ενημέρωση του email.
+emailUpdatedTitle=Ενημέρωση email
+emailUpdated=Το email του λογαριασμού άλλαξε επιτυχώς σε {0}.
+updatePasswordTitle=Ενημέρωση κωδικού
+codeSuccessTitle=Επιτυχής κωδικός
+codeErrorTitle=Αριθμός σφάλματος\: {0}
+displayUnsupported=Μη υποστηριζόμενος τύπος οθόνης
+browserRequired=Απαιτείται browser για την είσοδο
+browserContinue=Απαιτείται browser για την ολοκλήρωση της εισόδου
+browserContinuePrompt=Εκκίνηση browser και συνέχεια στην είσοδο [ν/ο]:
+browserContinueAnswer=ν
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Εσωτερικό
+unknown=Άγνωστο
+termsTitle=Όροι και Συνθήκες
+termsText=<p>Δεν έχουν οριστεί Όροι και Συνθήκες</p>
+termsPlainText=Δεν έχουν οριστεί Όροι και Συνθήκες.
+recaptchaFailed=Άκυρο Recaptcha
+recaptchaNotConfigured=Απαιτείται Recaptcha, αλλά δεν έχει ρυθμιστεί
+consentDenied=Άρνηση Συναίνεσης.
+noAccount=Νέος χρήστης;
+username=Όνομα χρήστη
+usernameOrEmail=Όνομα χρήστη ή email
+firstName=Όνομα
+givenName=Όνομα
+fullName=Ονοματεπώνυμο
+lastName=Επώνυμο
+familyName=Επώνυμο
+email=Email
+password=Κωδικός πρόσβασης
+passwordConfirm=Επιβεβαίωση κωδικού
+passwordNew=Νέος Κωδικός Πρόσβασης
+passwordNewConfirm=Επιβεβαίωση Νέου Κωδικού
+rememberMe=Να με θυμάσαι
+authenticatorCode=Κωδικός μίας-χρήσης
+address=Διεύθυνση
+street=Οδός
+locality=Πόλη ή Δήμος
+region=Νομός ή Περιφέρεια
+postal_code=Ταχυδρομικός Κώδικας
+country=Χώρα
+emailVerified=Επιβεβαιωμένο Email
+website=Ιστοσελίδα
+phoneNumber=Τηλέφωνο
+phoneNumberVerified=Επιβεβαιωμένο τηλέφωνο
+gender=Φύλο
+birthday=Ημερομηνία γέννησης
+zoneinfo=Ζώνη ώρας
+gssDelegationCredential=GSS διαπιστευτήρια εξουσιοδότησης
+logoutOtherSessions=Έξοδος από άλλες συσκευές
+profileScopeConsentText=Προφίλ χρήστη
+emailScopeConsentText=Διεύθυνση email
+addressScopeConsentText=Διεύθυνση
+phoneScopeConsentText=Τηλέφωνο
+offlineAccessScopeConsentText=Πρόσβαση εκτός-σύνδεσης
+samlRoleListScopeConsentText=Οι Ρόλοι Μου
+rolesScopeConsentText=Ρόλοι χρήστη
+restartLoginTooltip=Επανεκκίνηση Εισόδου
+loginTotpIntro=Πρέπει να ορίσετε μια γεννήτρια Κωδικών Μίας Χρήσης για να έχετε πρόσβαση στο λογαριασμό
+loginTotpStep1=Εγκαταστήστε μία από τις ακόλουθες εφαρμογές στο κινητό σας:
+loginTotpStep2=Ανοίξτε την εφαρμογή και σαρώστε το Κώδικα QR:
+loginTotpStep3=Εισάγετε το κωδικό μίας-χρήσης όπως παρέχεται από την εφαρμογή και πατήστε το Υποβολή για να ολοκληρώσετε.
+loginTotpStep3DeviceName=Παρέχετε ένα Όνομα Συσκευής για ευκολία διαχείρισης των συσκευών OTP.
+loginTotpManualStep2=Ανοίξτε την εφαρμογή και εισάγετε το μυστικό κλειδί:
+loginTotpManualStep3=Χρησιμοποιείστε τις παρακάτω τιμές ρυθμίσεων αν η εφαρμογή το υποστηρίζει:
+loginTotpUnableToScan=Πρόβλημα στη σάρωση;
+loginTotpScanBarcode=Σάρωση του QR;
+loginCredential=Διαπιστευτήρια
+loginOtpOneTime=Κωδικός μίας-χρήσης
+loginTotpType=Τύπος
+loginTotpAlgorithm=Αλγόριθμος
+loginTotpDigits=Ψηφία
+loginTotpInterval=Διάστημα
+loginTotpCounter=Μετρητής
+loginTotpDeviceName=Όνομα Συσκευής
+loginTotp.totp=Χρονικός
+loginTotp.hotp=Σειριακός
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+loginChooseAuthenticator=Επιλέξτε μέθοδο εισόδου
+oauthGrantRequest=Παραχωρείτε αυτά τα δικαιώματα πρόσβασης;
+inResource=σε
+oauth2DeviceVerificationTitle=Σύνδεση Συσκευής
+verifyOAuth2DeviceUserCode=Εισάγετε τον κωδικό που παρέχεται από την συσκευή και πατήστε Υποβολή
+oauth2DeviceInvalidUserCodeMessage=Άκυρος κωδικός, παρακαλώ προσπαθήστε ξανά.
+oauth2DeviceExpiredUserCodeMessage=Ο κωδικός έχει λήξει. Παρακαλώ πηγαίνετε πίσω στη συσκευή σας και προσπαθήστε να συνδεθείτε ξανά.
+oauth2DeviceVerificationCompleteHeader=Επιτυχής σύνδεση συσκευής
+oauth2DeviceVerificationCompleteMessage=Μπορείτε να κλείσετε το παράθυρο του browser και να επιστρέψετε στη συσκευή σας.
+oauth2DeviceVerificationFailedHeader=Η σύνδεση της συσκευής απέτυχε
+oauth2DeviceVerificationFailedMessage=Μπορείτε να κλείσετε αυτόν τον περιηγητή και να πάτε πίσω στη συσκευή σας και να πρσπαθήσετε να συνδεθείτε ξανά.
+oauth2DeviceConsentDeniedMessage=Δεν δώθηκε συγκατάθεση για σύνδεση στη συσκευή.
+oauth2DeviceAuthorizationGrantDisabledMessage=Ο πελάτης δεν επιτρέπεται να ξεκινήσει το OAuth 2.0 για τη χορήγηση εξουσιοδότησης της συσκευής. Αυτή η ροή είναι απενεργοποιημένη για τον πελάτη.
+emailVerifyInstruction1=Σας στάλθηκε ένα email με οδηγίες για το πως να επιβεβαιώσετε τη διεύθυνση σας {0}.
+emailVerifyInstruction2=Δεν έχετε λάβει έναν κωδικό επαλήθευσης στο email σας;
+emailVerifyInstruction3=να ξανασταλεί το email.
+emailLinkIdpTitle=Σύνδεση {0}
+emailLinkIdp1=Στάλθηκε ένα email με οδηγίες για να συνδέσετε το {0} λογαριασμό {1} με το {2} λογαριασμό.
+emailLinkIdp2=Δεν έχετε λάβει έναν κωδικό επαλήθευσης στο email σας;
+emailLinkIdp3=να ξανασταλεί το email.
+emailLinkIdp4=Αν έχετε ήδη επαλυθεύσει το email σε έναν διαφορετικό περιηγητή
+emailLinkIdp5=για συνέχεια.
+backToLogin=&laquo; Επιστροφή στην Είσοδο
+emailInstruction=Εισάγετε το όνομα χρήστη ή τη διεύθυνση email και θα σας σταλούν οδηγίες για το πως να δημιουργήσετε ένα νέο κωδικό.
+emailInstructionUsername=Εισάγετε το όνομα χρήστη και θα σας σταλούν οδηγίες για το πως να δημιουργήσετε ένα νέο κωδικό.
+copyCodeInstruction=Παρακαλώ αντιγράψτε αυτό το κωδικό στην εφαρμογή σας:
+pageExpiredTitle=Η σελίδα έληξε
+pageExpiredMsg1=Για επανεκκίνηση της εισόδου
+pageExpiredMsg2=Για συνέχεια της εισόδου
+personalInfo=Προσωπικά Στοιχεία:
+role_admin=Διαχειριστής
+role_realm-admin=Διαχειριστή Τόπου
+role_create-realm=Δημιουργία τομέα
+role_create-client=Δημιουργία πελάτη
+role_view-realm=Εμφάνιση τομέα
+role_view-users=Εμφάνιση χρηστών
+role_view-applications=Εμφάνιση εφαρμογών
+role_view-clients=Εμφάνιση πελατών
+role_view-events=Εμφάνιση συμβάντων
+role_view-identity-providers=Εμφάνιση παρόχων ταυτότητας
+role_manage-realm=Διαχείριση τομέα
+role_manage-users=Διαχείριση χρηστών
+role_manage-applications=Διαχείριση εφαρμογών
+role_manage-identity-providers=Διαχείριση παρόχων ταυτότητας
+role_manage-clients=Διαχείριση πελατών
+role_manage-events=Διαχείριση συμβάντων
+role_view-profile=Εμφάνιση προφίλ
+role_manage-account=Διαχείριση λογαριασμού
+role_manage-account-links=Διαχείριση συνδέσεων λογαριασμού
+role_read-token=Ανάγνωση διακριτικού
+role_offline-access=Πρόσβαση εκτός-σύνδεσης
+client_account=Λογαριασμός
+client_account-console=Κονσόλα Λογαριασμού
+client_security-admin-console=Κονσόλα Διαχειριστή Ασφάλειας
+client_admin-cli=CLI Διαχείρισης
+client_realm-management=Διαχείριση Τομέα
+client_broker=Μεσολαβητής
+requiredFields=Απαιτούμενα πεδία
+invalidUserMessage=Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης.
+invalidUsernameMessage=Μη έγκυρο όνομα χρήστη.
+invalidUsernameOrEmailMessage=Μη έγκυρο όνομα χρήστη ή email.
+invalidPasswordMessage=Μη έγκυρος κωδικός πρόσβασης.
+invalidEmailMessage=Μη έγκυρη διεύθυνση email.
+accountDisabledMessage=Ο λογαριασμός έχει απενεργοποιηθεί, επικοινωνήστε με το διαχειριστή.
+accountTemporarilyDisabledMessage=Ο λογαριασμός έχει απενεργοποιηθεί προσωρινά, επικοινωνήστε με το διαχειριστή ή δοκιμάστε αργότερα.
+expiredCodeMessage=Λήξη χρόνου σύνδεσης. Παρακαλώ συνδεθείτε ξανά.
+expiredActionMessage=Η ενέργεια έληξε. Προχωρείστε τώρα με σύνδεση.
+expiredActionTokenNoSessionMessage=Η ενέργεια έληξε.
+expiredActionTokenSessionExistsMessage=Η ενέργεια έλειξε. Παρακαλώ αρχίστε ξανά.
+sessionLimitExceeded=Πάρα πολλές συνεδρίες
+missingFirstNameMessage=Παρακαλώ ορίστε ένα όνομα.
+missingLastNameMessage=Παρακαλώ ορίστε επώνυμο.
+missingEmailMessage=Παρακαλώ ορίστε email.
+missingUsernameMessage=Παρακαλώ ορίστε όνομα χρήστη.
+missingPasswordMessage=Παρακαλώ ορίστε κωδικό πρόσβασης.
+missingTotpMessage=Παρακαλώ εισάγετε ένα κωδικό από εφαρμογή ταυτοποίησης.
+missingTotpDeviceNameMessage=Παρακαλώ ορίστε όνομα συσκευής.
+notMatchPasswordMessage=Οι κωδικοί πρόσβασης δε ταιριάζουν.
+error-invalid-value=Μη έγκυρη τιμή.
+error-invalid-blank=Παρακαλώ ορίστε τιμή.
+error-empty=Παρακαλώ ορίστε τιμή.
+error-invalid-length=Το μήκος πρέπει να είναι μεταξύ {1} και {2}.
+error-invalid-length-too-short=Ελάχιστο μήκος {1}.
+error-invalid-length-too-long=Μέγιστο μήκος {2}.
+error-invalid-email=Μη έγκυρη διεύθυνση email.
+error-invalid-number=Μη έγκυρος αριθμός.
+error-number-out-of-range=Ο αριθμός πρέπει να είναι μεταξύ {1} και {2}.
+error-number-out-of-range-too-small=Ο αριθμός πρέπει να έχει ελάχιστη τιμή {1}.
+error-number-out-of-range-too-big=Ο αριθμός πρέπει να έχει μέγιστη τιμή {1}.
+error-pattern-no-match=Μη έγκυρη τιμή.
+error-invalid-uri=Μη έγκυρο URL.
+error-invalid-uri-scheme=Μη έγκυρο σχήμα URL.
+error-invalid-uri-fragment=Μη έγκυρο κομμάτι URL.
+error-user-attribute-required=Παρακαλώ ορίστε αυτό το πεδίο.
+error-invalid-date=Μη έγκυρη ημερομηνία.
+error-user-attribute-read-only=Αυτό το πεδίο είναι για ανάγνωση μόνο.
+error-username-invalid-character=Η τιμή περιέχει μη έγκυρους χαρακτήρες.
+error-person-name-invalid-character=Η τιμή περιέχει μη έγκυρο χαρακτήρα.
+invalidPasswordExistingMessage=Μη έγκυρος υπάρχοντας κωδικός πρόσβασης.
+invalidPasswordBlacklistedMessage=Μη έγκυρος κωδικός πρόσβασης: ο κωδικός είναι απαγορευμένος.
+invalidPasswordConfirmMessage=Η επιβεβαίωση του κωδικού πρόσβασης δε ταιριάζει.
+invalidTotpMessage=Μη έγκυρος κωδικός μίας χρήσης.
+usernameExistsMessage=Το όνομα χρήστη υπάρχει ήδη.
+emailExistsMessage=Το email υπάρχει ήδη.
+federatedIdentityExistsMessage=Ο χρήστης με {0} {1} υπάρχει ήδη. Παρακαλώ συνδεθείτε στη διαχείριση λογαριασμού για να συνδέσετε το λογαριασμό.
+federatedIdentityUnavailableMessage=Δεν υπάρχει ο χρήστης {0} που συνδέθηκε με το πάροχο ταυτότητας {1} . Επικοινωνήστε με το διαχειριστή.
+confirmLinkIdpTitle=Ο λογαριασμός υπάρχει ήδη
+federatedIdentityConfirmLinkMessage=Ο χρήστης {0} {1} υπάρχει ήδη. Σίγουρα να συνεχίσω;
+federatedIdentityConfirmReauthenticateMessage=Αυθεντικοποίηση για σύνδεση του λογαριασμού σας με το {0}
+nestedFirstBrokerFlowMessage=Ο {0} χρήστης {1} δεν έχει συνδεθεί με κάποιο γνωστό χρήστη.
+confirmLinkIdpReviewProfile=Εξέταση προφίλ
+confirmLinkIdpContinue=Προσθήκη σε υπάρχων λογαριασμό
+configureTotpMessage=Ρυθμίστε μια Εφαρμογή Ταυτοποίησης στο κινητό σας για να ενεργοποιήσετε το λογαριασμό.
+configureBackupCodesMessage=Πρέπει να ορίσετε Κωδικούς Ασφαλείας για να ενεργοποιήσετε το λογαριασμό σας.
+updateProfileMessage=Πρέπει να ενημερώσετε το προφίλ χρήστη σας για να ενεργοποιήσετε το λογαριασμό σας.
+updatePasswordMessage=Πρέπει να αλλάξετε το κωδικό πρόσβασης για να ενεργοποιήσετε το λογαριασμό σας.
+updateEmailMessage=Πρέπει να ενημερώσετε το email σας για να ενεργοποιήσετε το λογαριασμός σας.
+resetPasswordMessage=Πρέπει να αλλάξετε το κωδικό πρόσβασης σας.
+verifyEmailMessage=Πρέπει να επιβεβαιώσετε το email σας για να ενεργοποιήσετε το λογαριασμό σας.
+linkIdpMessage=Πρέπει να επιβεβαιώσετε το email σας για να συνδέσετε το λογαριασμό σας με το {0}.
+emailSentMessage=Θα λάβετε ένα email σύντομα με επιπλέων πληροφορίες.
+emailSendErrorMessage=Αποτυχία αποστολής email, παρακαλώ δοκιμάστε αργότερα.
+accountUpdatedMessage=Ο λογαριασμός σας έχει ενημερωθεί.
+accountPasswordUpdatedMessage=Ο κωδικός πρόσβασης ενημερώθηκε.
+delegationCompleteHeader=Επιτυχής Είσοδος
+delegationCompleteMessage=Μπορείτε να κλείστε αυτό το παράθυρο του browser και να επιστρέψετε στην εφαρμογή κονσόλας.
+delegationFailedHeader=Αποτυχία Εισόδου
+delegationFailedMessage=Μπορείτε να κλείσετε αυτό το παράθυρο και να επιστρέψετε στην εφαρμογή κονσόλας σας και να δοκιμάσετε να μπείτε ξανά.
+noAccessMessage=Καμία πρόσβαση
+invalidPasswordMinLengthMessage=Μη έγκυρος κωδικός πρόσβασης: ελάχιστο μήκος {0}.
+invalidPasswordMaxLengthMessage=Μη έγκυρος κωδικός πρόσβασης: μέγιστο μήκος {0}.
+invalidPasswordMinDigitsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} ψηφία.
+invalidPasswordMinLowerCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} πεζούς χαρακτήρες.
+invalidPasswordMinUpperCaseCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} κεφαλαίους χαρακτήρες.
+invalidPasswordMinSpecialCharsMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να περιέχει τουλάχιστον {0} ειδικούς χαρακτήρες.
+invalidPasswordNotUsernameMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το όνομα χρήστη.
+invalidPasswordNotEmailMessage=Μη έγκυρος κωδικός πρόσβασης: πρέπει να μην είναι ίσο με το email.
+invalidPasswordRegexPatternMessage=Μη έγκυρος κωδικός πρόσβασης: δε ταιριάζει με τα μοτίβα regex.
+invalidPasswordHistoryMessage=Μη έγκυρος κωδικός πρόσβασης: δε πρέπει να είναι το ίδιο με τους τελευταίους {0} κωδικούς.
+invalidPasswordGenericMessage=Μη έγκυρος κωδικός πρόσβασης: ο νέος κωδικός δε συμφωνεί με τις πολιτικές κωδικών.
+failedToProcessResponseMessage=Αδυναμία επεξεργασίας της απάντησης
+httpsRequiredMessage=Απαιτείται HTTPS
+realmNotEnabledMessage=Ο τομέας δεν είναι ενεργός
+invalidRequestMessage=Μη Έγκυρη Αίτηση
+successLogout=Έχετε αποσυνδεθεί
+failedLogout=Αποτυχία αποσύνδεσης
+unknownLoginRequesterMessage=Άγνωστος αιτών σύνδεσης
+loginRequesterNotEnabledMessage=Δεν έχει ενεργοποιηθεί ο αιτών Σύνδεσης
+bearerOnlyMessage=Εφαρμογές τύπου Bearer-only δεν επιτρέπονται να εκκινήσουν είσοδο μέσω browser
+standardFlowDisabledMessage=Ο πελάτης δεν επιτρέπεται να ξεκινά είσοδο μέσω browser με το δοθέν response_type. Η πρότυπη ροή έχει απενεργοποιηθεί για αυτό το πελάτη.
+implicitFlowDisabledMessage=Ο πελάτης δεν επιτρέπεται να ξεκινά είσοδο μέσω browser με το δοθέν response_type. Η έμμεση ροή έχει απενεργοποιηθεί για αυτό το πελάτη.
+invalidRedirectUriMessage=Μη έγκυρο redirect uri
+unsupportedNameIdFormatMessage=Μη υποστηριζόμενη NamedIDFormat
+invalidRequesterMessage=Μη έγκυρος αιτών
+registrationNotAllowedMessage=Η εγγραφή δεν επιτρέπεται
+resetCredentialNotAllowedMessage=Η Επαναφορά Διαπιστευτηρίων δεν επιτρέπεται
+permissionNotApprovedMessage=Η άδεια δεν εγκρίθηκε.
+noRelayStateInResponseMessage=Δεν υπάρχει κατάσταση μεταβίβασης στην απάντηση από το πάροχο ταυτότητας.
+insufficientPermissionMessage=Δεν επαρκούν τα δικαιώματα για σύνδεση των ταυτοτήτων.
+couldNotProceedWithAuthenticationRequestMessage=Αδυναμία ολοκλήρωσης του ελέγχου ταυτότητας στο πάροχο ταυτότητας.
+couldNotObtainTokenMessage=Αδυναμία απόκτησης διακριτικού από το πάροχο ταυτότητας.
+unexpectedErrorRetrievingTokenMessage=Απρόσμενο σφάλμα κατά την απόκτηση διακριτικού από το πάροχο ταυτότητας.
+unexpectedErrorHandlingResponseMessage=Απρόσμενο σφάλμα κατά το χειρισμό της απάντησης από το πάροχο ταυτότητας.
+identityProviderAuthenticationFailedMessage=Η ταυτοποίηση απέτυχε. Αδυναμία ελέγχου της ταυτότητας με το πάροχο ταυτότητας.
+couldNotSendAuthenticationRequestMessage=Αδυναμία αποστολής του αιτήματος ελέγχου ταυτότητας στο πάροχο ταυτότητας.
+unexpectedErrorHandlingRequestMessage=Απρόσμενο σφάλμα κατά το χειρισμό του αιτήματος ταυτοποποίησης στο πάροχο ταυτότητας.
+invalidAccessCodeMessage=Μη έγκυρος κωδικός πρόσβασης.
+sessionNotActiveMessage=Η συνεδρία δεν είναι ενεργή.
+invalidCodeMessage=Συνέβη ένα σφάλμα, παρακαλώ για επανασύνδεση μέσω της εφαρμογής σας.
+cookieNotFoundMessage=Δε βρέθηκε το cookie. Παρακαλώ βεβαιωθείτε ότι τα cookies είναι ενεργά στο browser σας.
+insufficientLevelOfAuthentication=Δεν ικανοποιήθηκε το επίπεδο ταυτοποίησης που ζητήθηκε.
+identityProviderUnexpectedErrorMessage=Απρόσμενο σφάλμα κατά τη ταυτοποίηση με το πάροχο ταυτότητας
+identityProviderMissingStateMessage=Λείπει η παράμετρος state από την απάντηση του παρόχου ταυτότητας.
+identityProviderInvalidResponseMessage=Μη έγκυρη απάντηση από το πάροχο ταυτότητας.
+identityProviderInvalidSignatureMessage=Μη έγκυρη υπογραφή στην απάντηση από το πάροχο ταυτότητας.
+identityProviderNotFoundMessage=Αδυναμία εύρεσης ενός παρόχου ταυτότητας με το αναγνωριστικό.
+identityProviderLinkSuccess=Επιβεβαιώσατε το email σας επιτυχώς. Παρακαλώ επιστρέψτε στο αρχικό browser και συνεχίστε εκεί την είσοδο.
+staleCodeMessage=Αυτή η σελίδα δεν είναι πια έγκυρη, παρακαλώ επιστρέψτε στην εφαρμογή σας και συνδεθείτε ξανά
+realmSupportsNoCredentialsMessage=Ο τομέας δεν υποστηρίζει κανένα τύπο διαπιστευτηρίων.
+credentialSetupRequired=Αδυναμία εισόδου, απαιτείται ρύθμιση των διαπιστευτηρίων.
+identityProviderNotUniqueMessage=Ο τομέας υποστηρίζει πολλαπλούς παρόχους ταυτότητας. Αδυναμία επιλογής του παρόχου ταυτότητας που θα χρησιμοποιηθεί για τη ταυτοποίηση.
+emailVerifiedMessage=Η διεύθυνση email σας έχει επιβεβαιωθεί.
+staleEmailVerificationLink=Ο σύνδεσμός που πατήσατε είναι παλιός και δεν είναι έγκυρος πια. Ίσως έχετε ήδη επιβεβαιώσει το email σας.
+identityProviderAlreadyLinkedMessage=Η ομόσπονδη ταυτότητα που επιστρέφει το {0} είναι ήδη συνδεδεμένη με ένα άλλο χρήστη.
+confirmAccountLinking=Επιβεβαιώστε τη σύνδεση του λογαριασμού {0} στο πάροχο ταυτότητας {1} με το λογαριασμό σας.
+confirmEmailAddressVerification=Επιβεβαιώστε την εγκυρότητα της διεύθυνσης email {0}.
+confirmExecutionOfActions=Πραγματοποιήστε την ακόλουθη ενέργεια(ες)
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fr=Français
+locale_gr=Ελληνικά
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+locale_fi=Suomi
+backToApplication=&laquo; Επιστροφή στην Εφαρμογή
+missingParameterMessage=Λείπουν οι παράμετροι: {0}
+clientNotFoundMessage=Ο πελάτης δε βρέθηκε.
+clientDisabledMessage=Ο πελάτης απενεργοποιήθηκε.
+invalidParameterMessage=Μη έγκυρη παράμετρος: {0}
+alreadyLoggedIn=Έχετε ήδη συνδεθεί.
+differentUserAuthenticated=Έχετε ήδη ταυτοποιηθεί σε αυτή τη συνεδρία ως ο άλλος χρήστης ''{0}''. Παρακαλώ πρώτα να αποσυνδεθείτε.
+brokerLinkingSessionExpired=Αιτήθηκε σύνδεση με λογαριασμό μεσολαβητή, αλλά η τρέχουσα συνεδρία δεν είναι πια έγκυρη.
+proceedWithAction=&raquo; Πατήστε εδώ για να προχωρήσετε
+acrNotFulfilled=Δεν ικανοποιούνται οι απαιτήσεις ταυτοποίησης
+requiredAction.CONFIGURE_TOTP=Ρύθμιση OTP
+requiredAction.terms_and_conditions=Όροι και Συνθήκες
+requiredAction.UPDATE_PASSWORD=Ενημέρωση Κωδικού Πρόσβασης
+requiredAction.UPDATE_PROFILE=Ενημέρωση Προφίλ
+requiredAction.VERIFY_EMAIL=Επιβεβαίωση Email
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Δημιουργία Κωδικών Ανάκτησης
+requiredAction.webauthn-register-passwordless=Εγγραφή σε Webauthn Χωρίς-Κωδικό-Πρόσβασης
+invalidTokenRequiredActions=Οι απαιτούμενες ενέργειες που περιλαμβάνονται σε αυτό το σύνδεσμο δεν είναι έγκυρες
+doX509Login=Θα συνδεθείτε ως:
+clientCertificate=Πιστοποιητικό πελάτη X509:
+noCertificate=[Κανένα Πιστοποιητικό]
+
+
+pageNotFound=Η σελίδα δε βρέθηκε
+internalServerError=Συνέβη ένα εσωτερικό σφάλμα στην υπηρεσία
+console-username=Όνομα Χρήστη:
+console-password=Κωδικός Πρόσβασης:
+console-otp=Κωδικός Μίας Χρήσης:
+console-new-password=Νέος Κωδικός Πρόσβασης:
+console-confirm-password=Επιβεβαίωση Κωδικού:
+console-update-password=Απαιτείται η ενημέρωση του κωδικού πρόσβασης σας.
+console-verify-email=Πρέπει να επιβεβαιώσετε την διεύθυνση email σας.  Στάλθηκε ένα email στο {0} το οποίο περιέχει ένα κωδικό επιβεβαίωσης.  Παρακαλώ εισάγετε το κωδικό στο παρακάτω πεδίο.
+console-email-code=Κωδικός Email:
+console-accept-terms=Αποδοχή Όρων [ν/ο]:
+console-accept=ν
+
+# Openshift messages
+openshift.scope.user_info=Πληροφορίες χρήστη
+openshift.scope.user_check-access=Πληροφορίες πρόσβασης χρήστη
+openshift.scope.user_full=Πλήρης Πρόσβαση
+openshift.scope.list-projects=Εμφάνιση λίστας έργων
+
+# SAML authentication
+saml.post-form.title=Ανακατεύθυνση Ταυτοποίησης
+saml.post-form.message=Ανακατεύθυνση, παρακαλώ αναμένατε.
+saml.post-form.js-disabled=Έχει απενεργοποιηθεί η JavaScript. Συνιστούμε να την ενεργοποιήσετε. Πατήστε το κουμπί παρακάτω για να συνεχίσετε. 
+saml.artifactResolutionServiceInvalidResponse=Αδυναμία επίλυσης του στοιχείου.
+
+#authenticators
+otp-display-name=Εφαρμογή Ταυτοποίησης
+otp-help-text=Εισάγετε ένα κωδικό επιβεβαίωσης από την εφαρμογή ταυτοποίησης.
+password-display-name=Κωδικός Πρόσβασης
+password-help-text=Συνδεθείτε βάζοντας το κωδικό πρόσβασης σας.
+auth-username-form-display-name=Όνομα Χρήστη
+auth-username-form-help-text=Ξεκινήστε την είσοδο με το όνομα του χρήστη σας
+auth-username-password-form-display-name=Όνομα χρήστη και κωδικός πρόσβασης
+auth-username-password-form-help-text=Συνδεθείτε με το όνομα χρήστη και το κωδικό πρόσβασης σας.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Κωδικός Ανάκτησης Ταυτοποίησης
+auth-recovery-authn-code-form-help-text=Δώστε ένα κωδικό ανάκτησης ταυτοποίησης από μια προϋπάρχουσα λίστα.
+auth-recovery-code-info-message=Δώστε το καθορισμένο κωδικό ανάκτησης.
+auth-recovery-code-prompt=Κωδικός ανάκτησης #{0}
+auth-recovery-code-header=Σύνδεση με ένα κωδικό ανάκτησης ταυτοποίησης
+recovery-codes-error-invalid=Μη έγκυρος κωδικός ανάκτησης ταυτοποίησης
+recovery-code-config-header=Κωδικοί Ανάκτησης Ταυτοποίησης
+recovery-code-config-warning-title=Αυτοί οι κωδικοί ανάκτησης δεν θα είναι πια ορατή μετά που θα βγείτε από τη σελίδα
+recovery-code-config-warning-message=Βεβαιωθείτε ότι τους εκτυπώσατε, κατεβάσατε ή αντιγράψατε στο διαχειριστή κωδικών σας με ασφάλεια. Η ακύρωση αυτής της διαδικασίας θα αφαιρέσει αυτούς του κωδικούς ανάκτησης από το λογαριασμό σας.
+recovery-codes-print=Εκτύπωση
+recovery-codes-download=Λήψη
+recovery-codes-copy=Αντιγραφή
+recovery-codes-copied=Αντιγράφηκε
+recovery-codes-confirmation-message=Αποθήκευσα αυτούς του κωδικούς με ασφάλεια
+recovery-codes-action-complete=Ολοκλήρωση διαδικασίας
+recovery-codes-action-cancel=Ακύρωση διαδικασίας
+recovery-codes-download-file-header=Κρατήστε αυτούς του κωδικούς ανάκτησης κάπου ασφαλές.
+recovery-codes-download-file-description=Οι κωδικοί ανάκτησης είναι μυστικά μίας χρήσης που επιτρέπουν να συνδεθείτε στο λογαριασμό αν δεν έχετε πρόσβαση στην εφαρμογή ταυτοποίησης.
+recovery-codes-download-file-date=Αυτοί οι κωδικοί δημιουργήθηκαν στις
+recovery-codes-label-default=Κωδικοί ανάκτησης
+
+# WebAuthn
+webauthn-display-name=Κλειδί Ασφαλείας
+webauthn-help-text=Χρήση του κλειδιού ασφαλείας σας για σύνδεση.
+webauthn-passwordless-display-name=Κλειδί Ασφαλείας
+webauthn-passwordless-help-text=Χρήση του κλειδιού ασφαλείας για σύνδεση χωρίς κωδικό πρόσβασης.
+webauthn-login-title=Είσοδος με Κλειδί Ασφαλείας
+webauthn-registration-title=Εγγραφή Κλειδιού Ασφαλείας
+webauthn-available-authenticators=Διαθέσιμα Κλειδιά Ασφαλείας
+webauthn-unsupported-browser-text=Το WebAuthn δεν υποστηρίζεται από αυτό το browser. Δοκιμάστε κάποιον άλλο ή επικοινωνήστε με το διαχειριστή.
+webauthn-doAuthenticate=Σύνδεση με το Κλειδί Ασφαλείας
+webauthn-createdAt-label=Δημιουργήθηκε
+
+# WebAuthn Error
+webauthn-error-title=Σφάλμα Κλειδιού Ασφαλείας
+webauthn-error-registration=Αποτυχία εγγραφής του κλειδιού ασφαλείας σας.<br/> {0}
+webauthn-error-api-get=Αποτυχία ταυτοποίησης μέσω του Κλειδιού ασφαλείας.<br/> {0}
+webauthn-error-different-user=Ο αρχικός ταυτοποιημένος χρήστης δεν είναι ο ίδιος με αυτό που ταυτοποιήθηκε με το Κλειδί ασφαλείας.
+webauthn-error-auth-verification=Μη έγκυρο αποτέλεσμα ταυτοποίησης του Κλειδιού ασφαλείας.<br/> {0}
+webauthn-error-register-verification=Μη έγκυρο αποτέλεσμα εγγραφής του Κλειδιού ασφαλείας.<br/> {0}
+webauthn-error-user-not-found=Άγνωστος χρήστης ταυτοποιήθηκε με το Κλειδί ασφαλείας.
+
+# Identity provider
+identity-provider-redirector=Σύνδεση με ένα άλλο Πάροχο Ταυτότητας
+identity-provider-login-label=Ή σύνδεση με
+idp-email-verification-display-name=Πιστοποίηση Email
+idp-email-verification-help-text=Σύνδεση του λογαριασμού με επιβεβαίωση του email σας.
+idp-username-password-form-display-name=Όνομα χρήστη και κωδικός πρόσβασης
+idp-username-password-form-help-text=Σύνδεση του λογαριασμού σας μέσω της εισόδου σας.
+finalDeletionConfirmation=Αν διαγράψετε το λογαριασμό σας, η ανάκτηση θα είναι αδύνατη. Για να παραμείνει, πατήστε Ακύρωση.
+irreversibleAction=Αυτή η ενέργεια είναι μη αναστρέψιμη
+deleteAccountConfirm=Επιβεβαίωση διαγραφής λογαριασμού
+deletingImplies=Η διαγραφή του λογαριασμού σας συνεπάγεται:
+errasingData=Διαγραφή όλων των δεδομένων σας
+loggingOutImmediately=Άμεση αποσύνδεση σας
+accountUnusable=Κάθε μεταγενέστερη χρήση αυτής της εφαρμογής δεν θα είναι δυνατή με αυτό το λογαριασμό
+userDeletedSuccessfully=Ο χρήστης διαγράφηκε με επιτυχία
+access-denied=Δεν επιτρέπεται η πρόσβαση
+access-denied-when-idp-auth=Δεν επιτρέπεται η πρόσβαση κατά τη ταυτοποίηση με {0}
+frontchannel-logout.title=Αποσύνδεση
+frontchannel-logout.message=Αποσυνδέεστε από τις παρακάτω εφαρμογές
+logoutConfirmTitle=Αποσύνδεση
+logoutConfirmHeader=Σίγουρα να γίνει αποσύνδεση;
+doLogout=Αποσύνδεση
+readOnlyUsernameMessage=Δε μπορείτε να ενημερώσετε το όνομα χρήστη σας καθώς είναι μόνο-για-ανάγνωση.
diff --git a/themes/custom-theme-template/login/messages/messages_en.properties b/themes/custom-theme-template/login/messages/messages_en.properties
new file mode 100755
index 0000000000000000000000000000000000000000..fd84ef6d27be243edfa148ed712172de3968dd07
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_en.properties
@@ -0,0 +1,528 @@
+doLogIn=Sign In
+doRegister=Register
+doRegisterSecurityKey=Register
+doCancel=Cancel
+doSubmit=Submit
+doBack=Back
+doYes=Yes
+doNo=No
+doContinue=Continue
+doIgnore=Ignore
+doAccept=Accept
+doDecline=Decline
+doForgotPassword=Forgot Password?
+doClickHere=Click here
+doImpersonate=Impersonate
+doTryAgain=Try again
+doTryAnotherWay=Try Another Way
+doConfirmDelete=Confirm deletion
+errorDeletingAccount=Error happened while deleting account
+deletingAccountForbidden=You do not have enough permissions to delete your own account, contact admin.
+kerberosNotConfigured=Kerberos Not Configured
+kerberosNotConfiguredTitle=Kerberos Not Configured
+bypassKerberosDetail=Either you are not logged in by Kerberos or your browser is not set up for Kerberos login.  Please click continue to login in through other means
+kerberosNotSetUp=Kerberos is not set up.  You cannot login.
+registerTitle=Register
+loginAccountTitle=Sign in to your account
+loginTitle=Sign in to {0}
+loginTitleHtml={0}
+impersonateTitle={0} Impersonate User
+impersonateTitleHtml=<strong>{0}</strong> Impersonate User
+realmChoice=Realm
+unknownUser=Unknown user
+loginTotpTitle=Mobile Authenticator Setup
+loginProfileTitle=Update Account Information
+loginIdpReviewProfileTitle=Update Account Information
+loginTimeout=Your login attempt timed out.  Login will start from the beginning.
+reauthenticate=Please re-authenticate to continue
+authenticateStrong=Strong authentication required to continue
+oauthGrantTitle=Grant Access to {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Make sure you trust {0} by learning how {0} will handle your data.
+oauthGrantReview=You could review the 
+oauthGrantTos=terms of service.
+oauthGrantPolicy=privacy policy.
+errorTitle=We are sorry...
+errorTitleHtml=We are <strong>sorry</strong> ...
+emailVerifyTitle=Email verification
+emailForgotTitle=Forgot Your Password?
+updateEmailTitle=Update email
+emailUpdateConfirmationSentTitle=Confirmation email sent
+emailUpdateConfirmationSent=A confirmation email has been sent to {0}. You must follow the instructions of the former to complete the email update.
+emailUpdatedTitle=Email updated
+emailUpdated=The account email has been successfully updated to {0}.
+updatePasswordTitle=Update password
+codeSuccessTitle=Success code
+codeErrorTitle=Error code\: {0}
+displayUnsupported=Requested display type unsupported
+browserRequired=Browser required to login
+browserContinue=Browser required to complete login
+browserContinuePrompt=Open browser and continue login? [y/n]:
+browserContinueAnswer=y
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Internal
+unknown=Unknown
+
+termsTitle=Terms and Conditions
+termsText=<p>Terms and conditions to be defined</p>
+termsPlainText=Terms and conditions to be defined.
+termsAcceptanceRequired=You must agree to our terms and conditions.
+acceptTerms=I agree to the terms and conditions
+
+deleteCredentialTitle=Delete {0}
+deleteCredentialMessage=Do you want to delete {0}?
+
+recaptchaFailed=Invalid Recaptcha
+recaptchaNotConfigured=Recaptcha is required, but not configured
+consentDenied=Consent denied.
+
+noAccount=New user?
+username=Username
+usernameOrEmail=Username or email
+firstName=First name
+givenName=Given name
+fullName=Full name
+lastName=Last name
+familyName=Family name
+email=Email
+password=Password
+passwordConfirm=Confirm password
+passwordNew=New Password
+passwordNewConfirm=New Password confirmation
+hidePassword=Hide password
+showPassword=Show password
+rememberMe=Remember me
+authenticatorCode=One-time code
+address=Address
+street=Street
+locality=City or Locality
+region=State, Province, or Region
+postal_code=Zip or Postal code
+country=Country
+emailVerified=Email verified
+website=Web page
+phoneNumber=Phone number
+phoneNumberVerified=Phone number verified
+gender=Gender
+birthday=Birthdate
+zoneinfo=Time zone
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=Sign out from other devices
+
+profileScopeConsentText=User profile
+emailScopeConsentText=Email address
+addressScopeConsentText=Address
+phoneScopeConsentText=Phone number
+offlineAccessScopeConsentText=Offline Access
+samlRoleListScopeConsentText=My Roles
+rolesScopeConsentText=User roles
+
+restartLoginTooltip=Restart login
+
+loginTotpIntro=You need to set up a One Time Password generator to access this account
+loginTotpStep1=Install one of the following applications on your mobile:
+loginTotpStep2=Open the application and scan the barcode:
+loginTotpStep3=Enter the one-time code provided by the application and click Submit to finish the setup.
+loginTotpStep3DeviceName=Provide a Device Name to help you manage your OTP devices.
+loginTotpManualStep2=Open the application and enter the key:
+loginTotpManualStep3=Use the following configuration values if the application allows setting them:
+loginTotpUnableToScan=Unable to scan?
+loginTotpScanBarcode=Scan barcode?
+loginCredential=Credential
+loginOtpOneTime=One-time code
+loginTotpType=Type
+loginTotpAlgorithm=Algorithm
+loginTotpDigits=Digits
+loginTotpInterval=Interval
+loginTotpCounter=Counter
+loginTotpDeviceName=Device Name
+
+loginTotp.totp=Time-based
+loginTotp.hotp=Counter-based
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=Select login method
+
+oauthGrantRequest=Do you grant these access privileges?
+inResource=in
+
+oauth2DeviceVerificationTitle=Device Login
+verifyOAuth2DeviceUserCode=Enter the code provided by your device and click Submit
+oauth2DeviceInvalidUserCodeMessage=Invalid code, please try again.
+oauth2DeviceExpiredUserCodeMessage=The code has expired. Please go back to your device and try connecting again.
+oauth2DeviceVerificationCompleteHeader=Device Login Successful
+oauth2DeviceVerificationCompleteMessage=You may close this browser window and go back to your device.
+oauth2DeviceVerificationFailedHeader=Device Login Failed
+oauth2DeviceVerificationFailedMessage=You may close this browser window and go back to your device and try connecting again.
+oauth2DeviceConsentDeniedMessage=Consent denied for connecting the device.
+oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
+
+emailVerifyInstruction1=An email with instructions to verify your email address has been sent to your address {0}.
+emailVerifyInstruction2=Haven''t received a verification code in your email?
+emailVerifyInstruction3=to re-send the email.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=An email with instructions to link {0} account {1} with your {2} account has been sent to you.
+emailLinkIdp2=Haven''t received a verification code in your email?
+emailLinkIdp3=to re-send the email.
+emailLinkIdp4=If you already verified the email in different browser
+emailLinkIdp5=to continue.
+
+backToLogin=&laquo; Back to Login
+
+emailInstruction=Enter your username or email address and we will send you instructions on how to create a new password.
+emailInstructionUsername=Enter your username and we will send you instructions on how to create a new password.
+
+copyCodeInstruction=Please copy this code and paste it into your application:
+
+pageExpiredTitle=Page has expired
+pageExpiredMsg1=To restart the login process
+pageExpiredMsg2=To continue the login process
+
+personalInfo=Personal Info:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Create realm
+role_create-client=Create client
+role_view-realm=View realm
+role_view-users=View users
+role_view-applications=View applications
+role_view-clients=View clients
+role_view-events=View events
+role_view-identity-providers=View identity providers
+role_manage-realm=Manage realm
+role_manage-users=Manage users
+role_manage-applications=Manage applications
+role_manage-identity-providers=Manage identity providers
+role_manage-clients=Manage clients
+role_manage-events=Manage events
+role_view-profile=View profile
+role_manage-account=Manage account
+role_manage-account-links=Manage account links
+role_read-token=Read token
+role_offline-access=Offline access
+client_account=Account
+client_account-console=Account Console
+client_security-admin-console=Security Admin Console
+client_admin-cli=Admin CLI
+client_realm-management=Realm Management
+client_broker=Broker
+
+requiredFields=Required fields
+
+invalidUserMessage=Invalid username or password.
+invalidUsernameMessage=Invalid username.
+invalidUsernameOrEmailMessage=Invalid username or email.
+invalidPasswordMessage=Invalid password.
+invalidEmailMessage=Invalid email address.
+accountDisabledMessage=Account is disabled, contact your administrator.
+accountTemporarilyDisabledMessage=Account is temporarily disabled; contact your administrator or retry later.
+expiredCodeMessage=Login timeout. Please sign in again.
+expiredActionMessage=Action expired. Please continue with login now.
+expiredActionTokenNoSessionMessage=Action expired.
+expiredActionTokenSessionExistsMessage=Action expired. Please start again.
+sessionLimitExceeded=There are too many sessions
+
+missingFirstNameMessage=Please specify first name.
+missingLastNameMessage=Please specify last name.
+missingEmailMessage=Please specify email.
+missingUsernameMessage=Please specify username.
+missingPasswordMessage=Please specify password.
+missingTotpMessage=Please specify authenticator code.
+missingTotpDeviceNameMessage=Please specify device name.
+notMatchPasswordMessage=Passwords don''t match.
+
+error-invalid-value=Invalid value.
+error-invalid-blank=Please specify value.
+error-empty=Please specify value.
+error-invalid-length=Length must be between {1} and {2}.
+error-invalid-length-too-short=Minimal length is {1}.
+error-invalid-length-too-long=Maximal length is {2}.
+error-invalid-email=Invalid email address.
+error-invalid-number=Invalid number.
+error-number-out-of-range=Number must be between {1} and {2}.
+error-number-out-of-range-too-small=Number must have minimal value of {1}.
+error-number-out-of-range-too-big=Number must have maximal value of {2}.
+error-pattern-no-match=Invalid value.
+error-invalid-uri=Invalid URL.
+error-invalid-uri-scheme=Invalid URL scheme.
+error-invalid-uri-fragment=Invalid URL fragment.
+error-user-attribute-required=Please specify this field.
+error-invalid-date=Invalid date.
+error-user-attribute-read-only=This field is read only.
+error-username-invalid-character=Value contains invalid character.
+error-person-name-invalid-character=Value contains invalid character.
+error-reset-otp-missing-id=Please choose an OTP configuration.
+
+invalidPasswordExistingMessage=Invalid existing password.
+invalidPasswordBlacklistedMessage=Invalid password: password is blacklisted.
+invalidPasswordConfirmMessage=Password confirmation doesn''t match.
+invalidTotpMessage=Invalid authenticator code.
+
+usernameExistsMessage=Username already exists.
+emailExistsMessage=Email already exists.
+
+federatedIdentityExistsMessage=User with {0} {1} already exists. Please login to account management to link the account.
+federatedIdentityUnavailableMessage=User {0} authenticated with identity provider {1} does not exist. Please contact your administrator.
+federatedIdentityUnmatchedEssentialClaimMessage=The ID token issued by the identity provider does not match the configured essential claim. Please contact your administrator.
+
+confirmLinkIdpTitle=Account already exists
+federatedIdentityConfirmLinkMessage=User with {0} {1} already exists. How do you want to continue?
+federatedIdentityConfirmReauthenticateMessage=Authenticate to link your account with {0}
+nestedFirstBrokerFlowMessage=The {0} user {1} is not linked to any known user.
+confirmLinkIdpReviewProfile=Review profile
+confirmLinkIdpContinue=Add to existing account
+
+configureTotpMessage=You need to set up Mobile Authenticator to activate your account.
+configureBackupCodesMessage=You need to set up Backup Codes to activate your account.
+updateProfileMessage=You need to update your user profile to activate your account.
+updatePasswordMessage=You need to change your password to activate your account.
+updateEmailMessage=You need to update your email address to activate your account.
+resetPasswordMessage=You need to change your password.
+verifyEmailMessage=You need to verify your email address to activate your account.
+linkIdpMessage=You need to verify your email address to link your account with {0}.
+
+emailSentMessage=You should receive an email shortly with further instructions.
+emailSendErrorMessage=Failed to send email, please try again later.
+
+accountUpdatedMessage=Your account has been updated.
+accountPasswordUpdatedMessage=Your password has been updated.
+
+delegationCompleteHeader=Login Successful
+delegationCompleteMessage=You may close this browser window and go back to your console application.
+delegationFailedHeader=Login Failed
+delegationFailedMessage=You may close this browser window and go back to your console application and try logging in again.
+
+noAccessMessage=No access
+
+invalidPasswordMinLengthMessage=Invalid password: minimum length {0}.
+invalidPasswordMaxLengthMessage=Invalid password: maximum length {0}.
+invalidPasswordMinDigitsMessage=Invalid password: must contain at least {0} numerical digits.
+invalidPasswordMinLowerCaseCharsMessage=Invalid password: must contain at least {0} lower case characters.
+invalidPasswordMinUpperCaseCharsMessage=Invalid password: must contain at least {0} upper case characters.
+invalidPasswordMinSpecialCharsMessage=Invalid password: must contain at least {0} special characters.
+invalidPasswordNotUsernameMessage=Invalid password: must not be equal to the username.
+invalidPasswordNotEmailMessage=Invalid password: must not be equal to the email.
+invalidPasswordRegexPatternMessage=Invalid password: fails to match regex pattern(s).
+invalidPasswordHistoryMessage=Invalid password: must not be equal to any of last {0} passwords.
+invalidPasswordGenericMessage=Invalid password: new password doesn''t match password policies.
+
+failedToProcessResponseMessage=Failed to process response
+httpsRequiredMessage=HTTPS required
+realmNotEnabledMessage=Realm not enabled
+invalidRequestMessage=Invalid Request
+successLogout=You are logged out
+failedLogout=Logout failed
+unknownLoginRequesterMessage=Unknown login requester
+loginRequesterNotEnabledMessage=Login requester not enabled
+bearerOnlyMessage=Bearer-only applications are not allowed to initiate browser login
+standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
+implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
+invalidRedirectUriMessage=Invalid redirect uri
+unsupportedNameIdFormatMessage=Unsupported NameIDFormat
+invalidRequesterMessage=Invalid requester
+registrationNotAllowedMessage=Registration not allowed
+resetCredentialNotAllowedMessage=Reset Credential not allowed
+
+permissionNotApprovedMessage=Permission not approved.
+noRelayStateInResponseMessage=No relay state in response from identity provider.
+insufficientPermissionMessage=Insufficient permissions to link identities.
+couldNotProceedWithAuthenticationRequestMessage=Could not proceed with authentication request to identity provider.
+couldNotObtainTokenMessage=Could not obtain token from identity provider.
+unexpectedErrorRetrievingTokenMessage=Unexpected error when retrieving token from identity provider.
+unexpectedErrorHandlingResponseMessage=Unexpected error when handling response from identity provider.
+identityProviderAuthenticationFailedMessage=Authentication failed. Could not authenticate with identity provider.
+couldNotSendAuthenticationRequestMessage=Could not send authentication request to identity provider.
+unexpectedErrorHandlingRequestMessage=Unexpected error when handling authentication request to identity provider.
+invalidAccessCodeMessage=Invalid access code.
+sessionNotActiveMessage=Session not active.
+invalidCodeMessage=An error occurred, please login again through your application.
+cookieNotFoundMessage=Cookie not found. Please make sure cookies are enabled in your browser.
+insufficientLevelOfAuthentication=The requested level of authentication has not been satisfied.
+identityProviderUnexpectedErrorMessage=Unexpected error when authenticating with identity provider
+identityProviderMissingStateMessage=Missing state parameter in response from identity provider.
+identityProviderMissingCodeOrErrorMessage=Missing code or error parameter in response from identity provider.
+identityProviderInvalidResponseMessage=Invalid response from identity provider.
+identityProviderInvalidSignatureMessage=Invalid signature in response from identity provider.
+identityProviderNotFoundMessage=Could not find an identity provider with the identifier.
+identityProviderLinkSuccess=You successfully verified your email. Please go back to your original browser and continue there with the login.
+staleCodeMessage=This page is no longer valid, please go back to your application and sign in again
+realmSupportsNoCredentialsMessage=Realm does not support any credential type.
+credentialSetupRequired=Cannot login, credential setup required.
+identityProviderNotUniqueMessage=Realm supports multiple identity providers. Could not determine which identity provider should be used to authenticate with.
+emailVerifiedMessage=Your email address has been verified.
+emailVerifiedAlreadyMessage=Your email address has been verified already.
+staleEmailVerificationLink=The link you clicked is an old stale link and is no longer valid.  Maybe you have already verified your email.
+identityProviderAlreadyLinkedMessage=Federated identity returned by {0} is already linked to another user.
+confirmAccountLinking=Confirm linking the account {0} of identity provider {1} with your account.
+confirmEmailAddressVerification=Confirm validity of e-mail address {0}.
+confirmExecutionOfActions=Perform the following action(s)
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fi=Suomi
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_lv=Latviešu
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_th=ไทย
+locale_tr=Türkçe
+locale_uk=Українська
+locale_zh-CN=中文简体
+
+backToApplication=&laquo; Back to Application
+missingParameterMessage=Missing parameters\: {0}
+clientNotFoundMessage=Client not found.
+clientDisabledMessage=Client disabled.
+invalidParameterMessage=Invalid parameter\: {0}
+alreadyLoggedIn=You are already logged in.
+differentUserAuthenticated=You are already authenticated as different user ''{0}'' in this session. Please sign out first.
+brokerLinkingSessionExpired=Requested broker account linking, but current session is no longer valid.
+proceedWithAction=&raquo; Click here to proceed
+acrNotFulfilled=Authentication requirements not fulfilled
+
+requiredAction.CONFIGURE_TOTP=Configure OTP
+requiredAction.TERMS_AND_CONDITIONS=Terms and Conditions
+requiredAction.UPDATE_PASSWORD=Update Password
+requiredAction.UPDATE_PROFILE=Update Profile
+requiredAction.VERIFY_EMAIL=Verify Email
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generate Recovery Codes
+requiredAction.webauthn-register-passwordless=Webauthn Register Passwordless
+
+invalidTokenRequiredActions=Required actions included in the link are not valid
+
+doX509Login=You will be logged in as\:
+clientCertificate=X509 client certificate\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=Page not found
+internalServerError=An internal server error has occurred
+
+console-username=Username:
+console-password=Password:
+console-otp=One Time Password:
+console-new-password=New Password:
+console-confirm-password=Confirm Password:
+console-update-password=Update of your password is required.
+console-verify-email=You need to verify your email address.  We sent an email to {0} that contains a verification code.  Please enter this code into the input below.
+console-email-code=Email Code:
+console-accept-terms=Accept Terms? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=User information
+openshift.scope.user_check-access=User access information
+openshift.scope.user_full=Full Access
+openshift.scope.list-projects=List projects
+
+# SAML authentication
+saml.post-form.title=Authentication Redirect
+saml.post-form.message=Redirecting, please wait.
+saml.post-form.js-disabled=JavaScript is disabled. We strongly recommend to enable it. Click the button below to continue. 
+saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
+
+#authenticators
+otp-display-name=Authenticator Application
+otp-help-text=Enter a verification code from authenticator application.
+otp-reset-description=Which OTP configuration should be removed?
+password-display-name=Password
+password-help-text=Sign in by entering your password.
+auth-username-form-display-name=Username
+auth-username-form-help-text=Start sign in by entering your username
+auth-username-password-form-display-name=Username and password
+auth-username-password-form-help-text=Sign in by entering your username and password.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Recovery Authentication Code
+auth-recovery-authn-code-form-help-text=Enter a recovery authentication code from a previously generated list.
+auth-recovery-code-info-message=Enter the specified recovery code.
+auth-recovery-code-prompt=Recovery code #{0}
+auth-recovery-code-header=Login with a recovery authentication code
+recovery-codes-error-invalid=Invalid recovery authentication code
+recovery-code-config-header=Recovery Authentication Codes
+recovery-code-config-warning-title=These recovery codes won't appear again after leaving this page
+recovery-code-config-warning-message=Make sure to print, download, or copy them to a password manager and keep them save. Canceling this setup will remove these recovery codes from your account.
+recovery-codes-print=Print
+recovery-codes-download=Download
+recovery-codes-copy=Copy
+recovery-codes-copied=Copied
+recovery-codes-confirmation-message=I have saved these codes somewhere safe
+recovery-codes-action-complete=Complete setup
+recovery-codes-action-cancel=Cancel setup
+recovery-codes-download-file-header=Keep these recovery codes somewhere safe.
+recovery-codes-download-file-description=Recovery codes are single-use passcodes that allow you to sign in to your account if you do not have access to your authenticator.
+recovery-codes-download-file-date=These codes were generated on
+recovery-codes-label-default=Recovery codes
+
+# WebAuthn
+webauthn-display-name=Passkey
+webauthn-help-text=Use your Passkey to sign in.
+webauthn-passwordless-display-name=Passkey
+webauthn-passwordless-help-text=Use your Passkey for passwordless sign in.
+webauthn-login-title=Passkey login
+webauthn-registration-title=Passkey Registration
+webauthn-available-authenticators=Available Passkeys
+webauthn-unsupported-browser-text=WebAuthn is not supported by this browser. Try another one or contact your administrator.
+webauthn-doAuthenticate=Sign in with Passkey
+webauthn-createdAt-label=Created
+
+# WebAuthn Error
+webauthn-error-title=Passkey Error
+webauthn-error-registration=Failed to register your Passkey.<br/> {0}
+webauthn-error-api-get=Failed to authenticate by the Passkey.<br/> {0}
+webauthn-error-different-user=First authenticated user is not the one authenticated by the Passkey.
+webauthn-error-auth-verification=Passkey authentication result is invalid.<br/> {0}
+webauthn-error-register-verification=Passkey registration result is invalid.<br/> {0}
+webauthn-error-user-not-found=Unknown user authenticated by the Passkey.
+
+# Identity provider
+identity-provider-redirector=Connect with another Identity Provider
+identity-provider-login-label=Or sign in with
+idp-email-verification-display-name=Email Verification
+idp-email-verification-help-text=Link your account by validating your email.
+idp-username-password-form-display-name=Username and password
+idp-username-password-form-help-text=Link your account by logging in.
+
+finalDeletionConfirmation=If you delete your account, it cannot be restored. To keep your account, click Cancel.
+irreversibleAction=This action is irreversible
+deleteAccountConfirm=Delete account confirmation
+
+deletingImplies=Deleting your account implies:
+errasingData=Erasing all your data
+loggingOutImmediately=Logging you out immediately
+accountUnusable=Any subsequent use of the application will not be possible with this account
+userDeletedSuccessfully=User deleted successfully
+
+access-denied=Access denied
+access-denied-when-idp-auth=Access denied when authenticating with {0}
+
+frontchannel-logout.title=Logging out
+frontchannel-logout.message=You are logging out from following apps
+logoutConfirmTitle=Logging out
+logoutConfirmHeader=Do you want to log out?
+doLogout=Logout
+
+readOnlyUsernameMessage=You can''t update your username as it is read-only.
+error-invalid-multivalued-size=Attribute {0} must have at least {1} and at most {2} value(s).
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/messages/messages_es.properties b/themes/custom-theme-template/login/messages/messages_es.properties
new file mode 100755
index 0000000000000000000000000000000000000000..2910ffca4625a11d81d23a31e7eabdfbf759d586
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_es.properties
@@ -0,0 +1,542 @@
+doLogIn=Iniciar sesión
+doRegister=Regístrate
+doRegisterSecurityKey=Regístrate
+doCancel=Cancelar
+doSubmit=Enviar
+doYes=Sí
+doNo=No
+doContinue=Continuar
+doAccept=Aceptar
+doDecline=Declinar
+doForgotPassword=¿Has olvidado tu contraseña?
+doClickHere=Haz clic aquí
+doImpersonate=Personificar
+kerberosNotConfigured=Kerberos no configurado
+kerberosNotConfiguredTitle=Kerberos no configurado
+bypassKerberosDetail=O bien no estás identificado mediante Kerberos o tu navegador no está configurado para identificarse mediante Kerberos. Por favor haz clic para identificarte por otro medio.
+kerberosNotSetUp=Kerberos no está configurado. No puedes identificarte.
+registerWithTitle=Regístrate con {0}
+registerWithTitleHtml={0}
+loginAccountTitle=Acceder a tu cuenta
+loginTitle=Inicia sesión en {0}
+loginTitleHtml={0}
+impersonateTitle={0} Personificar Usuario
+impersonateTitleHtml=<strong>{0}</strong> Personificar Usuario
+realmChoice=Dominio
+unknownUser=Usuario desconocido
+loginTotpTitle=Configura tu aplicación de identificación móvil
+loginProfileTitle=Actualiza la información de tu cuenta
+loginTimeout=Has tardado demasiado en identificarte. Inicia de nuevo la identificación.
+oauthGrantTitle=Concesión OAuth
+oauthGrantTitleHtml={0}
+errorTitle=Lo sentimos...
+errorTitleHtml=Lo <strong>sentimos</strong>...
+emailVerifyTitle=Verificación del email
+emailForgotTitle=¿Has olvidado tu contraseña?
+updatePasswordTitle=Modificación de contraseña
+codeSuccessTitle=Código de éxito
+codeErrorTitle=Código de error: {0}
+
+termsTitle=Términos y Condiciones
+termsTitleHtml=Términos y Condiciones
+termsText=<p>Términes y condiciones a definir</p>
+
+recaptchaFailed=Reconocimiento de texto inválido
+recaptchaNotConfigured=El reconocimiento de texto es obligatorio pero no está configurado
+consentDenied=Consentimiento rechazado.
+
+noAccount=¿Usuario nuevo?
+username=Usuario
+usernameOrEmail=Usuario o email
+firstName=Nombre
+givenName=Nombre de pila
+fullName=Nombre completo
+lastName=Apellidos
+familyName=Apellidos
+email=Email
+password=Contraseña
+passwordConfirm=Confirma la contraseña
+passwordNew=Nueva contraseña
+passwordNewConfirm=Confirma la nueva contraseña
+rememberMe=Seguir conectado
+authenticatorCode=Código de identificación
+address=Dirección
+street=Calle
+locality=Ciudad o Municipio
+region=Estado, Provincia, o Región
+postal_code=Código Postal
+country=País
+emailVerified=Email verificado
+gssDelegationCredential=GSS Delegation Credential
+
+loginTotpIntro=Es necesario configurar un generador de claves de un sólo uso para acceder a esta cuenta
+loginTotpStep1=Instala <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> o Google Authenticator en tu teléfono móvil. Ambas aplicaciones están disponibles en <a href="https://play.google.com">Google Play</a> y en la App Store de Apple.
+loginTotpStep2=Abre la aplicación y escanea el código o introduce la clave.
+loginTotpStep3=Introduce el código único que te muestra la aplicación de autenticación y haz clic en Enviar para finalizar la configuración
+loginTotpStep3DeviceName=Introduce un nombre de dispositivo para que te ayude a gestionar tus dispositivos OTP.
+loginTotpManualStep2=Abre la aplicación e introduce la clave:
+loginTotpManualStep3=Usa los siguientes parámetros de configuración si la aplicación te permite introducirlos:
+loginTotpUnableToScan=¿No consigues escanear?
+loginTotpScanBarcode=¿Escanear el código de barras?
+loginCredential=Credenciales
+loginOtpOneTime=Código de un solo uso
+loginTotpType=Tipo
+loginTotpAlgorithm=Algoritmo
+loginTotpDigits=Dígitos
+loginTotpInterval=Intervalo
+loginTotpCounter=Contador
+loginTotpDeviceName=Nombre del dispositivo
+
+oauthGrantRequest=¿Quieres permitir estos privilegios de acceso?
+inResource=en
+
+emailVerifyInstruction1=Te hemos enviado un email con instrucciones para verificar tu email.
+emailVerifyInstruction2=¿No has recibido un código de verificación en tu email?
+emailVerifyInstruction3=para reenviar el email.
+
+backToLogin=&laquo; Volver a la identificación
+
+emailInstruction=Indica tu usuario o email y te enviaremos instrucciones indicando cómo generar una nueva contraseña.
+
+copyCodeInstruction=Por favor, copia y pega este código en tu aplicación:
+
+personalInfo=Información personal:
+role_admin=Admin
+role_realm-admin=Administrador del dominio
+role_create-realm=Crear dominio
+role_create-client=Crear cliente
+role_view-realm=Ver dominio
+role_view-users=Ver usuarios
+role_view-applications=Ver aplicaciones
+role_view-clients=Ver clientes
+role_view-events=Ver eventos
+role_view-identity-providers=Ver proveedores de identidad
+role_manage-realm=Gestionar dominio
+role_manage-users=Gestionar usuarios
+role_manage-applications=Gestionar aplicaciones
+role_manage-identity-providers=Gestionar proveedores de identidad
+role_manage-clients=Gestionar clientes
+role_manage-events=Gestionar eventos
+role_view-profile=Ver perfil
+role_manage-account=Gestionar cuenta
+role_read-token=Leer token
+role_offline-access=Acceso sin conexión
+client_account=Cuenta
+client_security-admin-console=Consola de Administración de Seguridad
+client_realm-management=Gestión del dominio
+client_broker=Broker
+
+invalidUserMessage=Usuario o contraseña incorrectos.
+invalidEmailMessage=Email no válido
+accountDisabledMessage=La cuenta está desactivada, contacta con el administrador.
+accountTemporarilyDisabledMessage=La cuenta está temporalmente desactivada, contacta con el administrador o inténtalo de nuevo más tarde.
+expiredCodeMessage=Se agotó el tiempo máximo para la identificación. Por favor identificate de nuevo.
+expiredActionMessage=Acción caducada. Continúe con el inicio de sesión ahora.
+sessionLimitExceeded=Hay demasiadas sesiones.
+
+missingFirstNameMessage=Por favor indica tu nombre.
+missingLastNameMessage=Por favor indica tus apellidos.
+missingEmailMessage=Por favor indica tu email.
+missingUsernameMessage=Por favor indica tu usuario.
+missingPasswordMessage=Por favor indica tu contraseña.
+missingTotpMessage=Por favor indica tu código de autenticación
+notMatchPasswordMessage=Las contraseñas no coinciden.
+
+invalidPasswordExistingMessage=La contraseña actual no es correcta.
+invalidPasswordBlacklistedMessage=Contraseña no válida: la contraseña está en la lista negra.
+invalidPasswordConfirmMessage=La confirmación de contraseña no coincide.
+invalidTotpMessage=El código de autenticación no es válido.
+
+usernameExistsMessage=El nombre de usuario ya existe
+emailExistsMessage=El email ya existe
+
+federatedIdentityEmailExistsMessage=Ya existe un usuario con este email. Por favor accede a la gestión de tu cuenta para enlazarlo.
+federatedIdentityUsernameExistsMessage=Ya existe un usuario con este nombre de usuario. Por favor accede a la gestión de tu cuenta para enlazarlo.
+federatedIdentityExistsMessage=El usuario con {0} {1} ya existe. Inicie sesión en la administración de cuentas para vincular la cuenta.
+federatedIdentityUnavailableMessage=El usuario {0} autenticado con el proveedor de identidad {1} no existe. Póngase en contacto con su administrador.
+
+configureTotpMessage=Tienes que configurar la aplicación móvil de identificación para activar tu cuenta.
+configureBackupCodesMessage=Tienes que configurar códigos de respaldo para activar su cuenta.
+updateProfileMessage=Tienes que actualizar tu perfil de usuario para activar tu cuenta.
+updatePasswordMessage=Tienes que cambiar tu contraseña para activar tu cuenta.
+updateEmailMessage=Tienes que actualizar su dirección de correo electrónico para activar su cuenta.
+resetPasswordMessage=Tienes que cambiar tu contraseña.
+verifyEmailMessage=Tienes que verificar tu email para activar tu cuenta.
+linkIdpMessage=Debe verificar su dirección de correo electrónico para vincular su cuenta con {0}.
+
+emailSentMessage=En breve deberías recibir un mensaje con más instrucciones
+emailSendErrorMessage=Falló el envío del email, por favor inténtalo de nuevo más tarde.
+
+accountUpdatedMessage=Tu cuenta se ha actualizado.
+accountPasswordUpdatedMessage=Tu contraseña se ha actualizado.
+
+noAccessMessage=Sin acceso
+
+invalidPasswordMinLengthMessage=Contraseña incorrecta: longitud mínima {0}.
+invalidPasswordMinDigitsMessage=Contraseña incorrecta: debe contaner al menos {0} caracteres numéricos.
+invalidPasswordMinLowerCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras minúsculas.
+invalidPasswordMinUpperCaseCharsMessage=Contraseña incorrecta: debe contener al menos {0} letras mayúsculas.
+invalidPasswordMinSpecialCharsMessage=Contraseña incorrecta: debe contener al menos {0} caracteres especiales.
+invalidPasswordNotUsernameMessage=Contraseña incorrecta: no puede ser igual al nombre de usuario.
+invalidPasswordRegexPatternMessage=Contraseña incorrecta: no cumple la expresión regular.
+invalidPasswordHistoryMessage=Contraseña incorrecta: no puede ser igual a ninguna de las últimas {0} contraseñas.
+
+failedToProcessResponseMessage=Fallo al procesar la respuesta
+httpsRequiredMessage=HTTPS obligatorio
+realmNotEnabledMessage=El dominio no está activado
+invalidRequestMessage=Petición incorrecta
+failedLogout=Falló la desconexión.
+unknownLoginRequesterMessage=Solicitante de identificación desconocido
+loginRequesterNotEnabledMessage=El solicitante de inicio de sesión está desactivado
+bearerOnlyMessage=Las aplicaciones Bearer-only no pueden iniciar sesión desde el navegador.
+directGrantsOnlyMessage=Los clientes de tipo Direct-grants-only no pueden iniciar sesión desde el navegador.
+invalidRedirectUriMessage=La URI de redirección no es correcta
+unsupportedNameIdFormatMessage=NameIDFormat no soportado
+invalidRequesterMessage=Solicitante no válido
+registrationNotAllowedMessage=El registro no está permitido
+resetCredentialNotAllowedMessage=El reinicio de las credenciales no está permitido
+
+permissionNotApprovedMessage=Permiso no aprobado.
+noRelayStateInResponseMessage=Sin estado de retransmisión en la respuesta del proveedor de identidad.
+identityProviderAlreadyLinkedMessage=La identidad devuelta por el proveedor de identidad ya está asociada a otro usuario.
+insufficientPermissionMessage=Permisos insuficientes para enlazar identidades.
+couldNotProceedWithAuthenticationRequestMessage=No se pudo continuar con la petición de autenticación al proveedor de identidad.
+couldNotObtainTokenMessage=.No se pudo obtener el código del proveedor de identidad
+unexpectedErrorRetrievingTokenMessage=Error inesperado obteniendo el token del proveedor de identidad
+unexpectedErrorHandlingResponseMessage=Error inesperado procesando la respuesta del proveedor de identidad.
+identityProviderAuthenticationFailedMessage=Falló la autenticación. No fue posible autenticarse en el proveedor de identidad.
+couldNotSendAuthenticationRequestMessage=No se pudo enviar la petición de identificación al proveedor de identidad.
+unexpectedErrorHandlingRequestMessage=Error inesperado durante la petición de identificación al proveedor de identidad.
+invalidAccessCodeMessage=Código de acceso no válido.
+sessionNotActiveMessage=La sesión no está activa
+invalidCodeMessage=Ha ocurrido un error, por favor identificate de nuevo desde tu aplicación.
+identityProviderUnexpectedErrorMessage=Error no esperado intentado autenticar en el proveedor de identidad.
+identityProviderNotFoundMessage=No se encontró un proveedor de identidad.
+realmSupportsNoCredentialsMessage=El dominio no soporta ningún tipo de credenciales.
+identityProviderNotUniqueMessage=El dominio soporta múltiples proveedores de identidad. No se pudo determinar el proveedor de identidad que debería ser utilizado para identificarse.
+emailVerifiedMessage=Tu email ha sido verificado.
+staleEmailVerificationLink=El enlace en el que hizo clic es un enlace obsoleto antiguo y ya no es válido. Tal vez ya hayas verificado tu correo electrónico.
+identityProviderInvalidResponseMessage=Respuesta no válida del proveedor de identidad.
+confirmAccountLinking=Confirme la vinculación de la cuenta {0} del proveedor de identidad {1} con su cuenta.
+identityProviderMissingStateMessage=Falta el parámetro de estado en respuesta del proveedor de identidad.
+confirmEmailAddressVerification=Confirme la validez de la dirección de correo electrónico {0}.
+confirmExecutionOfActions=Realice las siguientes acciones
+
+backToApplication=&laquo; Volver a la aplicación
+missingParameterMessage=Parámetros que faltan: {0}
+clientNotFoundMessage=Cliente no encontrado
+invalidParameterMessage=Parámetro no válido: {0}
+alreadyLoggedIn=Ya se ha autentificado.
+proceedWithAction=» Haz click aquí para proceder
+
+requiredAction.CONFIGURE_TOTP=Configurar OTP
+requiredAction.TERMS_AND_CONDITIONS=Términos y condiciones
+requiredAction.UPDATE_PASSWORD=Actualización de contraseña
+requiredAction.UPDATE_PROFILE=Actualización del perfil
+requiredAction.VERIFY_EMAIL=Verificar correo electrónico
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generar códigos de recuperación
+requiredAction.webauthn-register-passwordless=Webauthn Registro sin contraseña
+
+pageNotFound=Página no encontrada
+internalServerError=Se ha producido un error interno del servidor.
+
+# Identity provider
+identity-provider-redirector=Inicie sesión con otro proveedor de identidad
+identity-provider-login-label=O inicie sesión con
+idp-email-verification-display-name=Verificacion de email
+idp-email-verification-help-text=Vincule su cuenta validando su correo electrónico.
+idp-username-password-form-display-name=Usuario y contraseña
+idp-username-password-form-help-text=Vincule su cuenta iniciando sesión.
+
+access-denied=Acceso denegado
+
+logoutConfirmTitle=Cerrando sesión
+logoutConfirmHeader=¿Quieres cerrar sesión?
+doLogout=Cerrar sesión
+
+doBack=Atrás
+doIgnore=Ignorar
+doTryAgain=Intentar otra vez
+doTryAnotherWay=Prueba de otra manera
+doConfirmDelete=Confirmar la eliminación
+errorDeletingAccount=Ocurrió un error al intentar eliminar la cuenta
+deletingAccountForbidden=No tiene suficientes permisos para eliminar su propia cuenta, comuníquese con un administrador.
+registerTitle=Registro
+loginIdpReviewProfileTitle=Actualizar información de la cuenta
+reauthenticate=Vuelva a autenticar para continuar
+oauthGrantInformation=Asegúrese de que confía en {0} aprendiendo cómo {0} manejará sus datos.
+oauthGrantReview=Podrías revisar el
+oauthGrantTos=términos de servicio.
+oauthGrantPolicy=política de privacidad.
+updateEmailTitle=Actualizar correo electrónico
+emailUpdateConfirmationSentTitle=Correo de confirmación enviado
+emailUpdateConfirmationSent=Se ha enviado un correo electrónico de confirmación a {0}. Debe seguir las instrucciones de este para completar la actualización del correo electrónico.
+emailUpdatedTitle=Correo electrónico actualizado
+emailUpdated=El correo electrónico de la cuenta se ha actualizado correctamente a {0}.
+displayUnsupported=Tipo de visualización solicitado no soportado
+browserRequired=El navegador requerido para iniciar sesión
+browserContinue=El navegador requerido para completar el inicio de sesión
+browserContinuePrompt=¿Abrir el navegador y continuar iniciando sesión?[y/n]:
+browserContinueAnswer=Y
+
+# Transports
+usb=usb
+nfc=nfc
+bluetooth=bluetooth
+internal=Interna
+unknown=Desconocida
+
+termsPlainText=Términos y condiciones a definir.
+termsAcceptanceRequired=Debe aceptar nuestros términos y condiciones.
+acceptTerms=Estoy de acuerdo con los términos y condiciones
+
+
+hidePassword=Ocultar contraseña
+showPassword=Mostrar contraseña
+website=Página web
+phoneNumber=Número de teléfono
+phoneNumberVerified=Número de teléfono verificado
+gender=Género
+birthday=Fecha de nacimiento
+zoneinfo=Zona horaria
+logoutOtherSessions=Cerrar sesión en otros dispositivos
+
+profileScopeConsentText=Perfil del usuario
+emailScopeConsentText=Dirección de correo electrónico
+addressScopeConsentText=Dirección
+phoneScopeConsentText=Número de teléfono
+offlineAccessScopeConsentText=Acceso fuera de línea
+samlRoleListScopeConsentText=Mis roles
+rolesScopeConsentText=Roles del usuario
+
+restartLoginTooltip=Reiniciar el inicio de sesión
+
+loginTotp.totp=Basado en el tiempo
+loginTotp.hotp=Basado en contador
+
+totpAppFreeOTPName=FreeOtp
+totpAppGoogleName=Autenticador de Google
+totpAppMicrosoftAuthenticatorName=Autenticador de Microsoft
+
+loginChooseAuthenticator=Seleccione el método de inicio de sesión
+
+
+oauth2DeviceVerificationTitle=Inicio de sesión del dispositivo
+verifyOAuth2DeviceUserCode=Ingrese el código proporcionado por su dispositivo y haga clic en Enviar
+oauth2DeviceInvalidUserCodeMessage=Código no válido, por favor vuelva a intentarlo.
+oauth2DeviceExpiredUserCodeMessage=El código ha expirado. Vuelva a su dispositivo e intente conectarse nuevamente.
+oauth2DeviceVerificationCompleteHeader=Inicio de sesión del dispositivo exitoso
+oauth2DeviceVerificationCompleteMessage=Puede cerrar esta ventana del navegador y volver a su dispositivo.
+oauth2DeviceVerificationFailedHeader=Falló el inicio de sesión del dispositivo
+oauth2DeviceVerificationFailedMessage=Puede cerrar esta ventana del navegador y volver a su dispositivo e intentar conectarse nuevamente.
+oauth2DeviceConsentDeniedMessage=Consentimiento denegado por conectar el dispositivo.
+oauth2DeviceAuthorizationGrantDisabledMessage=El cliente no puede iniciar la petición de autorización del dispositivo OAuth 2.0. El flujo está deshabilitado para el cliente.
+
+emailLinkIdpTitle=Enlace {0}
+emailLinkIdp1=Se le ha enviado un correo electrónico con instrucciones para vincular {0} cuenta {1} con su cuenta {2}.
+emailLinkIdp2=¿No ha recibido un código de verificación en su correo electrónico?
+emailLinkIdp3=Para volver a enviar el correo electrónico.
+emailLinkIdp4=Si ya verificó el correo electrónico en diferentes navegadores
+emailLinkIdp5=continuar.
+
+emailInstructionUsername=Ingrese su nombre de usuario y le enviaremos instrucciones sobre cómo crear una nueva contraseña.
+
+pageExpiredTitle=La página ha expirado
+pageExpiredMsg1=Para reiniciar el proceso de inicio de sesión
+pageExpiredMsg2=Para continuar el proceso de inicio de sesión
+
+role_manage-account-links=Administrar enlaces de cuenta
+client_account-console=Consola de cuentas
+client_admin-cli=Administrador cli
+
+requiredFields=Campos requeridos
+
+invalidUsernameMessage=Nombre de usuario no válido.
+invalidUsernameOrEmailMessage=Nombre de usuario o correo electrónico no válidos.
+invalidPasswordMessage=Contraseña inválida.
+expiredActionTokenNoSessionMessage=Acción expirada.
+expiredActionTokenSessionExistsMessage=Acción expirada. Comience de nuevo.
+missingTotpDeviceNameMessage=Especifique el nombre del dispositivo.
+
+error-invalid-value=Valor no válido.
+error-invalid-blank=Especifique el valor.
+error-empty=Especifique el valor.
+error-invalid-length=La longitud debe estar entre {1} y {2}.
+error-invalid-length-too-short=La longitud mínima es {1}.
+error-invalid-length-too-long=La longitud máxima es {2}.
+error-invalid-email=Dirección de correo electrónico no válida.
+error-invalid-number=Número invalido.
+error-number-out-of-range=El número debe estar entre {1} y {2}.
+error-number-out-of-range-too-small=El número debe tener un valor mínimo de {1}.
+error-number-out-of-range-too-big=El número debe tener un valor máximo de {2}.
+error-pattern-no-match=Valor no válido.
+error-invalid-uri=URL invalida.
+error-invalid-uri-scheme=Esquema de URL no válido.
+error-invalid-uri-fragment=Fragmento de URL no válido.
+error-user-attribute-required=Especifique este campo.
+error-invalid-date=Fecha inválida.
+error-user-attribute-read-only=Este campo es de solo lectura.
+error-username-invalid-character=El valor contiene carácter inválido.
+error-person-name-invalid-character=El valor contiene carácter inválido.
+error-reset-otp-missing-id=Elija una configuración OTP.
+
+federatedIdentityUnmatchedEssentialClaimMessage=El token de identificación emitido por el proveedor de identidad no coincide con el reclamo esencial configurado. Póngase en contacto con su administrador.
+
+confirmLinkIdpTitle=La cuenta ya existe
+federatedIdentityConfirmLinkMessage=El usuario con {0} {1} ya existe.¿Cómo quieres continuar?
+federatedIdentityConfirmReauthenticateMessage=Autenticar para vincular su cuenta con {0}
+nestedFirstBrokerFlowMessage=El usuario {0} {1} no está vinculado a ningún usuario conocido.
+confirmLinkIdpReviewProfile=Perfil de revisión
+confirmLinkIdpContinue=Agregar a la cuenta existente
+
+delegationCompleteHeader=Inicio de sesión correcto
+delegationCompleteMessage=Puede cerrar esta ventana del navegador y volver a la aplicación de su consola.
+delegationFailedHeader=Error de inicio de sesión
+delegationFailedMessage=Puede cerrar esta ventana del navegador y volver a la aplicación de su consola e intentar iniciar sesión nuevamente.
+
+invalidPasswordMaxLengthMessage=Contraseña no válida: longitud máxima {0}.
+invalidPasswordNotEmailMessage=Contraseña no válida: no debe ser igual al correo electrónico.
+invalidPasswordGenericMessage=Contraseña no válida: la nueva contraseña no coincide con las políticas de contraseña.
+
+successLogout=Está desconectado
+standardFlowDisabledMessage=El cliente no puede iniciar el inicio de sesión del navegador con el tipo de respuesta dado. El flujo estándar está deshabilitado para el cliente.
+implicitFlowDisabledMessage=El cliente no puede iniciar el inicio de sesión del navegador con  el tipo de respuesta dado. El flujo implícito está deshabilitado para el cliente.
+
+cookieNotFoundMessage=Cookie no encontrada. Asegúrese de que las cookies estén habilitadas en su navegador.
+insufficientLevelOfAuthentication=El nivel de autenticación solicitado no se ha cumplido.
+identityProviderMissingCodeOrErrorMessage=Código faltante o parámetro de error en respuesta del proveedor de identidad.
+identityProviderInvalidSignatureMessage=Firma no válida en respuesta del proveedor de identidad.
+identityProviderLinkSuccess=Verificó con éxito su correo electrónico. Vuelva a su navegador original y continúe allí con el inicio de sesión.
+staleCodeMessage=Esta página ya no es válida, vuelva a su solicitud e inicie sesión nuevamente.
+credentialSetupRequired=No se puede iniciar sesión, se requiere configuración de credencial.
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fi=Suomi
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_lv=Latviešu
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_th=ไทย
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+
+clientDisabledMessage=Cliente deshabilitado.
+differentUserAuthenticated=Ya está autenticado como un usuario diferente ''{0}'' en esta sesión. Por favor cierre sesión primero.
+brokerLinkingSessionExpired=Vinculación de la cuenta del corredor solicitada, pero la sesión actual ya no es válida.
+acrNotFulfilled=Requisitos de autenticación no cumplidos
+
+invalidTokenRequiredActions=Las acciones requeridas incluidas en el enlace no son válidas
+
+doX509Login=Se registrará como\:
+clientCertificate=Certificado de cliente X509\:
+noCertificate=[Sin certificado]
+
+
+console-username=Nombre de usuario:
+console-password=Contraseña:
+console-otp=Contraseña de una sola vez:
+console-new-password=Nueva contraseña:
+console-confirm-password=Confirmar Contraseña:
+console-update-password=Se requiere la actualización de su contraseña.
+console-verify-email=Debe verificar su dirección de correo electrónico. Enviamos un correo electrónico a {0} que contiene un código de verificación. Ingrese este código en la entrada a continuación.
+console-email-code=Código de correo electrónico:
+console-accept-terms=¿Aceptar los terminos?[y/n]:
+console-accept=Y
+
+# Openshift messages
+openshift.scope.user_info=Informacion del usuario
+openshift.scope.user_check-access=Información de acceso de usuario
+openshift.scope.user_full=Acceso completo
+openshift.scope.list-projects=Listar proyectos
+
+# SAML authentication
+saml.post-form.title=Redirección de autenticación
+saml.post-form.message=Redireccionando, por favor espere.
+saml.post-form.js-disabled=JavaScript está deshabilitado. Recomendamos encarecidamente habilitarlo. Haga clic en el botón de abajo para continuar.
+saml.artifactResolutionServiceInvalidResponse=Incapaz de resolver artefactos.
+
+#authenticators
+otp-display-name=Aplicación de autenticador
+otp-help-text=Ingrese un código de verificación de la aplicación Authenticator.
+otp-reset-description=¿Qué configuración de OTP debe eliminarse?
+password-display-name=Contraseña
+password-help-text=Inicie sesión ingresando su contraseña.
+auth-username-form-display-name=Nombre de usuario
+auth-username-form-help-text=Comience el inicio de sesión ingresando su nombre de usuario
+auth-username-password-form-display-name=Nombre de usuario y contraseña
+auth-username-password-form-help-text=Inicie sesión ingresando su nombre de usuario y contraseña.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Código de autenticación de recuperación
+auth-recovery-authn-code-form-help-text=Ingrese un código de autenticación de recuperación desde una lista generada anteriormente.
+auth-recovery-code-info-message=Ingrese el código de recuperación especificado.
+auth-recovery-code-prompt=Código de recuperación #{0}
+auth-recovery-code-header=Iniciar sesión con un código de autenticación de recuperación
+recovery-codes-error-invalid=Código de autenticación de recuperación no válida
+recovery-code-config-header=Códigos de autenticación de recuperación
+recovery-code-config-warning-title=Estos códigos de recuperación no aparecerán nuevamente después de dejar esta página.
+recovery-code-config-warning-message=Asegúrese de imprimir, descargarlos o copiarlos a un administrador de contraseñas y mantenerlos seguros. Cancelar esta configuración eliminará estos códigos de recuperación de su cuenta.
+recovery-codes-print=Imprimir
+recovery-codes-download=Descargar
+recovery-codes-copy=Copiar
+recovery-codes-copied=Copiada
+recovery-codes-confirmation-message=He guardado estos códigos en algún lugar seguro
+recovery-codes-action-complete=Configuración completa
+recovery-codes-action-cancel=Cancelar configuración
+recovery-codes-download-file-header=Mantenga estos códigos de recuperación en algún lugar seguros.
+recovery-codes-download-file-description=Los códigos de recuperación son códigos de acceso de un solo uso que le permiten iniciar sesión en su cuenta si no tiene acceso a su autenticador.
+recovery-codes-download-file-date=Estos códigos se generaron en
+recovery-codes-label-default=Códigos de recuperación
+
+# WebAuthn
+webauthn-display-name=Clave de seguridad
+webauthn-help-text=Use su clave de seguridad para iniciar sesión.
+webauthn-passwordless-display-name=Clave de seguridad
+webauthn-passwordless-help-text=Use su clave de seguridad para iniciar sesión sin contraseña.
+webauthn-login-title=Inicio de sesión de la clave de seguridad
+webauthn-registration-title=Registro de clave de seguridad
+webauthn-available-authenticators=Claves de seguridad disponibles
+webauthn-unsupported-browser-text=WebAuthn no es compatible con este navegador. Pruebe con otro o comuníquese con su administrador.
+webauthn-doAuthenticate=Iniciar sesión con la clave de seguridad
+webauthn-createdAt-label=Creada
+
+# WebAuthn Error
+webauthn-error-title=Error de clave de seguridad
+webauthn-error-registration=No se pudo registrar su clave de seguridad. <br/> {0}
+webauthn-error-api-get=No se pudo autenticar por la clave de seguridad. <br/> {0}
+webauthn-error-different-user=El primer usuario autenticado no es el autenticado por la clave de seguridad.
+webauthn-error-auth-verification=El resultado de la autenticación de la clave de seguridad no es válido. <br/> {0}
+webauthn-error-register-verification=El resultado de registro de clave de seguridad no es válido. <br/> {0}
+webauthn-error-user-not-found=Usuario desconocido autenticado por la clave de seguridad.
+
+
+finalDeletionConfirmation=Si elimina su cuenta, no se puede restaurar. Para mantener su cuenta, haga clic en Cancelar.
+irreversibleAction=Esta acción es irreversible
+deleteAccountConfirm=Eliminar la confirmación de la cuenta
+
+deletingImplies=Eliminar su cuenta implica:
+errasingData=Borrando todos sus datos
+loggingOutImmediately=Registrándole inmediatamente
+accountUnusable=Cualquier uso posterior de la aplicación no será posible con esta cuenta
+userDeletedSuccessfully=Usuario eliminado con éxito
+
+access-denied-when-idp-auth=Acceso negado al autenticar con {0}
+
+frontchannel-logout.title=Saliendo de tu cuenta
+frontchannel-logout.message=Estás cerrando las siguientes aplicaciones
+readOnlyUsernameMessage=No puede actualizar su nombre de usuario, ya que es de solo lectura.
diff --git a/themes/custom-theme-template/login/messages/messages_fa.properties b/themes/custom-theme-template/login/messages/messages_fa.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f4430e86cfacf28b8894714ee5c23e69536026a8
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_fa.properties
@@ -0,0 +1,513 @@
+doLogIn=ورود
+doRegister=ثبت نام
+doRegisterSecurityKey=ثبت نام
+doCancel=لغو
+doSubmit=ارسال
+doBack=بازگشت
+doYes=بله
+doNo=خیر
+doContinue=ادامه
+doIgnore=نادیده‌گیری
+doAccept=پذیرفتن
+doDecline=رد کردن
+doForgotPassword=رمز عبور خود را فراموش کرده‌اید?
+doClickHere=اینجا را کلیک کنید
+doImpersonate=تقلید کردن
+doTryAgain=تلاش مجدد
+doTryAnotherWay=راه دیگری را امتحان کنید
+doConfirmDelete=تایید حذف
+errorDeletingAccount=خطایی هنگام حذف حساب رخ داد
+deletingAccountForbidden=شما مجوز کافی برای حذف حساب خود را ندارید، با ادمین تماس بگیرید.
+kerberosNotConfigured=Kerberos تنظیم نشده است
+kerberosNotConfiguredTitle=Kerberos تنظیم نشده است
+bypassKerberosDetail=یا توسط Kerberos وارد نشده اید یا مرورگر شما برای ورود به Kerberos تنظیم نشده است. لطفا روی ادامه کلیک کنید تا از راه های دیگر وارد شوید
+kerberosNotSetUp=Kerberos راه اندازی نشده است. شما نمی توانید وارد شوید.
+registerTitle=ثبت نام
+loginAccountTitle=به حساب خود وارد شوید
+loginTitle=به {0} وارد شوید
+loginTitleHtml={0}
+impersonateTitle={0} تقلید کاربر
+impersonateTitleHtml=<strong>{0}</strong> تقلید کاربر
+realmChoice=قلمرو
+unknownUser=کاربر ناشناس
+loginTotpTitle=راه اندازی دستگاه تأیید اعتبار موبایل
+loginProfileTitle=به روز رسانی اطلاعات حساب
+loginIdpReviewProfileTitle=به روز رسانی اطلاعات حساب
+loginTimeout=زمان تلاش برای ورود شما به پایان رسید. ورود از ابتدا شروع خواهد شد.
+reauthenticate=لطفاً برای ادامه دوباره احراز هویت کنید
+oauthGrantTitle=اعطای دسترسی به {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=با یادگیری نحوه مدیریت {0} با داده های شما، مطمئن شوید که به {0} اعتماد دارید.
+oauthGrantReview=شما می توانید بررسی کنید
+oauthGrantTos=شرایط استفاده از خدمات.
+oauthGrantPolicy=سیاست حفظ حریم خصوصی.
+errorTitle=متاسفیم...
+errorTitleHtml=ما <strong>متاسفیم</strong>...
+emailVerifyTitle=تایید ایمیل
+emailForgotTitle=رمز عبور خود را فراموش کرده اید؟
+updateEmailTitle=ایمیل را به روز کنید
+emailUpdateConfirmationSentTitle=ایمیل تایید فرستاده شد
+emailUpdateConfirmationSent=یک ایمیل تأیید به {0} ارسال شده است. برای تکمیل به‌روزرسانی ایمیل، باید دستورالعمل‌های قبلی را دنبال کنید.
+emailUpdatedTitle=ایمیل به روز شد
+emailUpdated=ایمیل حساب با موفقیت به {0} به روز شد.
+updatePasswordTitle=رمز عبور را به روز کنید
+codeSuccessTitle=کد موفقیت
+codeErrorTitle=کد خطا\: {0}
+displayUnsupported=نوع نمایش درخواستی پشتیبانی نمی شود
+browserRequired=برای ورود به سیستم مرورگر لازم است
+browserContinue=برای تکمیل ورود به مرورگر نیاز است
+browserContinuePrompt=مرورگر را باز کنید و به ورود ادامه دهید؟ [y/n]:
+browserContinueAnswer=y
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=بلوتوث
+internal=داخلی
+unknown=ناشناخته
+
+termsTitle=شرایط و ضوابط
+termsText=<p>شرایط و شرایطی که باید تعریف شوند</p>
+termsPlainText=شرایط و ضوابط باید تعریف شود.
+
+recaptchaFailed=Recaptcha نامعتبر است
+recaptchaNotConfigured=Recaptcha مورد نیاز است، اما پیکربندی نشده است
+consentDenied=رضایت رد شد.
+
+noAccount=کاربر جدید هستید؟
+username=نام کاربری
+usernameOrEmail=نام کاربری یا پست الکترونیک
+firstName=نام
+givenName=لقب
+fullName=نام کامل
+lastName=نام خانوادگی
+familyName=نام خانوادگی
+email=ایمیل
+password=رمز عبور
+passwordConfirm=تائید رمز عبور
+passwordNew=رمز عبور جدید
+passwordNewConfirm=تائید رمز عبور جدید
+rememberMe=مرا به خاطر بسپار
+authenticatorCode=کد یکبار مصرف
+address=آدرس
+street=خیابان
+locality=شهر یا محله
+region=ایالت، استان یا منطقه
+postal_code=کد پستی
+country=کشور
+emailVerified=ایمیل تأییده شده است
+website=صفحه وب
+phoneNumber=شماره تلفن
+phoneNumberVerified=شماره تلفن تایید شد
+gender=جنسیت
+birthday=تاریخ تولد
+zoneinfo=منطقه زمانی
+gssDelegationCredential=اعتبارنامه نمایندگی GSS
+logoutOtherSessions=از دستگاه های دیگر خارج شوید
+
+profileScopeConsentText=مشخصات کاربر
+emailScopeConsentText=آدرس ایمیل
+addressScopeConsentText=نشانی
+phoneScopeConsentText=شماره تلفن
+offlineAccessScopeConsentText=دسترسی آفلاین
+samlRoleListScopeConsentText=نقش های من
+rolesScopeConsentText=نقش های کاربر
+
+restartLoginTooltip=ورود مجدد را راه اندازی کنید
+
+loginTotpIntro=برای دسترسی به این حساب، باید یک تولید کننده رمز یک بار مصرف راه اندازی کنید
+loginTotpStep1=یکی از برنامه های زیر را روی موبایل خود نصب کنید:
+loginTotpStep2=برنامه را باز کنید و بارکد را اسکن کنید:
+loginTotpStep3=کد یکبار مصرف ارائه شده توسط برنامه را وارد کنید و برای تکمیل تنظیمات روی ارسال کلیک کنید.
+loginTotpStep3DeviceName=یک نام دستگاه برای کمک به مدیریت دستگاه های OTP خود ارائه دهید.
+loginTotpManualStep2=برنامه را باز کنید و کلید را وارد کنید:
+loginTotpManualStep3=اگر برنامه اجازه تنظیم آنها را می دهد، از مقادیر پیکربندی زیر استفاده کنید:
+loginTotpUnableToScan=نمی توانید اسکن کنید؟
+loginTotpScanBarcode=اسکن بارکد؟
+loginCredential=اعتبارنامه
+loginOtpOneTime=کد یکبار مصرف
+loginTotpType=نوع
+loginTotpAlgorithm=الگوریتم
+loginTotpDigits=ارقام
+loginTotpInterval=فاصله
+loginTotpCounter=شمارنده
+loginTotpDeviceName=نام دستگاه
+
+loginTotp.totp=مبتنی بر زمان
+loginTotp.hotp=مبتنی بر شمارنده
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=روش ورود را انتخاب کنید
+
+oauthGrantRequest=آیا به این امتیازات دسترسی می دهید؟
+inResource=در
+
+oauth2DeviceVerificationTitle=ورود به دستگاه
+verifyOAuth2DeviceUserCode=کد ارائه شده توسط دستگاه خود را وارد کرده و روی ارسال کلیک کنید
+oauth2DeviceInvalidUserCodeMessage=کد نامعتبر است، لطفا دوباره امتحان کنید.
+oauth2DeviceExpiredUserCodeMessage=کد منقضی شده است. لطفاً به دستگاه خود برگردید و دوباره سعی کنید وصل شوید.
+oauth2DeviceVerificationCompleteHeader=ورود دستگاه با موفقیت انجام شد
+oauth2DeviceVerificationCompleteMessage=می توانید این پنجره مرورگر را ببندید و به دستگاه خود بازگردید.
+oauth2DeviceVerificationFailedHeader=ورود دستگاه ناموفق بود
+oauth2DeviceVerificationFailedMessage=می توانید این پنجره مرورگر را ببندید و به دستگاه خود بازگردید و دوباره سعی کنید وصل شوید.
+oauth2DeviceConsentDeniedMessage=رضایت برای اتصال دستگاه رد شد.
+oauth2DeviceAuthorizationGrantDisabledMessage=مشتری مجاز به شروع OAuth 2.0 Device Authorization Grant نیست. جریان برای مشتری غیرفعال است.
+
+emailVerifyInstruction1=یک ایمیل حاوی دستورالعمل هایی برای تأیید آدرس ایمیل شما به آدرس شما {0} ارسال شده است.
+emailVerifyInstruction2=آیا کد تأیید در ایمیل خود دریافت نکرده اید؟
+emailVerifyInstruction3=برای ارسال مجدد ایمیل
+
+emailLinkIdpTitle=پیوند {0}
+emailLinkIdp1=یک ایمیل با دستورالعمل پیوند {0} حساب {1} با حساب {2} شما برای شما ارسال شده است.
+emailLinkIdp2=آیا کد تأیید در ایمیل خود دریافت نکرده اید؟
+emailLinkIdp3=برای ارسال مجدد ایمیل
+emailLinkIdp4=اگر قبلاً ایمیل را در مرورگر دیگری تأیید کرده اید
+emailLinkIdp5=ادامه.
+
+backToLogin=&laquo; بازگشت به صفحه ورود
+
+emailInstruction=نام کاربری یا آدرس ایمیل خود را وارد کنید و ما دستورالعمل هایی در مورد نحوه ایجاد رمز عبور جدید برای شما ارسال خواهیم کرد.
+emailInstructionUsername=نام کاربری خود را وارد کنید و ما دستورالعمل هایی در مورد نحوه ایجاد رمز عبور جدید برای شما ارسال خواهیم کرد.
+
+copyCodeInstruction=لطفا این کد را کپی کرده و در برنامه خود قرار دهید:
+
+pageExpiredTitle=صفحه منقضی شده است
+pageExpiredMsg1=برای راه اندازی مجدد فرآیند ورود
+pageExpiredMsg2=برای ادامه روند ورود
+
+personalInfo=اطلاعات شخصی:
+role_admin=ادمین
+role_realm-admin=ادمین قلمرو
+role_create-realm=ایجاد قلمرو
+role_create-client=ایجاد مشتری
+role_view-realm=مشاهده قلمرو
+role_view-users=مشاهده کاربران
+role_view-applications=مشاهده اپلیکیشن‌ها
+role_view-clients=مشاهده مشتری‌ها
+role_view-events=مشاهده رویداد
+role_view-identity-providers=مشاهده ارائه‌دهندگان هویت
+role_manage-realm=مدیریت قلمرو
+role_manage-users=میدیریت کاربران
+role_manage-applications=مدیریت اپلیکیشن‌ها
+role_manage-identity-providers=مدیریت ارائه‌دهندگان هویت
+role_manage-clients=مدیریت مشتریان
+role_manage-events=مدیریت رویدادها
+role_view-profile=مشاهده پروفایل
+role_manage-account=میدریت حساب
+role_manage-account-links=مدیریت پیوندهای حساب
+role_read-token=خواندن Token
+role_offline-access=دسترسی آفلاین
+client_account=حساب
+client_account-console=کنسول حساب
+client_security-admin-console=کنسول مدیریت امنیت
+client_admin-cli=ادمین CLI
+client_realm-management=مدیریت قلمرو
+client_broker=دلال
+
+requiredFields=فیلدهای مورد نیاز
+
+invalidUserMessage=نام کاربری یا رمز عبور نامعتبر است.
+invalidUsernameMessage=نام کاربری نامعتبر است.
+invalidUsernameOrEmailMessage=نام کاربری یا ایمیل نامعتبر است.
+invalidPasswordMessage=رمز عبور نامعتبر.
+invalidEmailMessage=آدرس ایمیل نامعتبر است.
+accountDisabledMessage=حساب غیرفعال است، با سرپرست خود تماس بگیرید.
+accountTemporarilyDisabledMessage=حساب به طور موقت غیرفعال شده است; با سرپرست خود تماس بگیرید یا بعداً دوباره امتحان کنید.
+expiredCodeMessage=اتمام مدت ورود. لطفاً دوباره وارد شوید.
+expiredActionMessage=اقدام منقضی شده است. لطفا همین الان با ورود به سیستم ادامه دهید.
+expiredActionTokenNoSessionMessage=اقدام منقضی شده است.
+expiredActionTokenSessionExistsMessage=اقدام منقضی شده است. لطفا دوباره شروع کنید.
+sessionLimitExceeded=تعداد جلسات بسیار زیاد است
+
+missingFirstNameMessage=لطفا نام را مشخص کنید
+missingLastNameMessage=لطفا نام خانوادگی را مشخص کنید
+missingEmailMessage=لطفا ایمیل را مشخص کنید
+missingUsernameMessage=لطفا نام کاربری را مشخص کنید
+missingPasswordMessage=لطفا رمز عبور را مشخص کنید
+missingTotpMessage=لطفا کد احراز هویت را مشخص کنید.
+missingTotpDeviceNameMessage=لطفا نام دستگاه را مشخص کنید.
+notMatchPasswordMessage=گذرواژه ها مطابقت ندارند
+
+error-invalid-value=مقدار نامعتبر است.
+error-invalid-blank=لطفا مقدار را مشخص کنید
+error-empty=لطفا مقدار را مشخص کنید
+error-invalid-length=طول باید بین {1} و {2} باشد.
+error-invalid-length-too-short=حداقل طول {1} است.
+error-invalid-length-too-long=حداکثر طول {2} است.
+error-invalid-email=آدرس ایمیل نامعتبر است.
+error-invalid-number=عدد نامعتبر.
+error-number-out-of-range=شماره باید بین {1} و {2} باشد.
+error-number-out-of-range-too-small=عدد باید حداقل مقدار {1} را داشته باشد.
+error-number-out-of-range-too-big=عدد باید حداکثر مقدار {2} را داشته باشد.
+error-pattern-no-match=مقدار نامعتبر است.
+error-invalid-uri=URL نامعتبر است.
+error-invalid-uri-scheme=طرح URL نامعتبر است.
+error-invalid-uri-fragment=قطعه URL نامعتبر است.
+error-user-attribute-required=لطفا این فیلد را مشخص کنید.
+error-invalid-date=تاریخ نامعتبر است.
+error-user-attribute-read-only=این فیلد فقط خواندنی است.
+error-username-invalid-character=مقدار حاوی کاراکتر نامعتبر است.
+error-person-name-invalid-character=مقدار حاوی نویسه نامعتبر است.
+
+invalidPasswordExistingMessage=رمز عبور موجود نامعتبر است.
+invalidPasswordBlacklistedMessage=رمز عبور نامعتبر: رمز عبور در لیست سیاه قرار گرفته است.
+invalidPasswordConfirmMessage=تأیید رمز عبور مطابقت ندارد.
+invalidTotpMessage=کد احراز هویت نامعتبر است.
+
+usernameExistsMessage=نام کاربری از قبل وجود دارد.
+emailExistsMessage=ایمیل از قبل وجود دارد.
+
+federatedIdentityExistsMessage=کاربر با {0} {1} از قبل وجود دارد. لطفا برای پیوند دادن حساب به مدیریت حساب وارد شوید.
+federatedIdentityUnavailableMessage=کاربر {0} احراز هویت شده با ارائه دهنده هویت {1} وجود ندارد. لطفا با ادمین خود تماس بگیرید.
+
+confirmLinkIdpTitle=حساب از قبل وجود دارد
+federatedIdentityConfirmLinkMessage=کاربر با {0} {1} از قبل وجود دارد. چگونه می خواهید ادامه دهید؟
+federatedIdentityConfirmReauthenticateMessage=برای پیوند دادن حساب خود با {0} احراز هویت
+nestedFirstBrokerFlowMessage=کاربر {0} {1} به هیچ کاربر شناخته شده ای پیوند داده نشده است.
+confirmLinkIdpReviewProfile=بررسی نمایه
+confirmLinkIdpContinue=اضافه‌‌کردن به حساب موحود
+
+configureTotpMessage=برای فعال کردن حساب خود باید اعتبارسنجی از طریق موبایل را راه اندازی کنید.
+configureBackupCodesMessage=برای فعال کردن حساب خود باید کدهای پشتیبان را تنظیم کنید.
+updateProfileMessage=برای فعال کردن حساب کاربری خود باید پروفایل کاربری خود را به روز کنید.
+updatePasswordMessage=برای فعال کردن حساب خود باید رمز عبور خود را تغییر دهید.
+updateEmailMessage=برای فعال کردن حساب خود باید آدرس ایمیل خود را به روز کنید.
+resetPasswordMessage=شما باید رمز عبور خود را تغییر دهید.
+verifyEmailMessage=برای فعال کردن حساب خود باید آدرس ایمیل خود را تأیید کنید.
+linkIdpMessage=برای پیوند دادن حساب خود با {0}، باید آدرس ایمیل خود را تأیید کنید.
+
+emailSentMessage=شما باید به زودی یک ایمیل با دستورالعمل های بیشتر دریافت کنید.
+emailSendErrorMessage=ایمیل ارسال نشد، لطفاً بعداً دوباره امتحان کنید.
+
+accountUpdatedMessage=حساب شما به روز شده است.
+accountPasswordUpdatedMessage=رمز عبور شما به روز شده است.
+
+delegationCompleteHeader=ورود با موفقیت
+delegationCompleteMessage=می توانید این پنجره مرورگر را ببندید و به برنامه کنسول خود بازگردید.
+delegationFailedHeader=ورود ناموفق بود
+delegationFailedMessage=می توانید این پنجره مرورگر را ببندید و به برنامه کنسول خود برگردید و دوباره سعی کنید وارد شوید.
+
+noAccessMessage=بذون دسترسی
+
+invalidPasswordMinLengthMessage=رمز عبور نامعتبر: حداقل طول {0}.
+invalidPasswordMaxLengthMessage=رمز عبور نامعتبر: حداکثر طول {0}.
+invalidPasswordMinDigitsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} رقم عددی باشد.
+invalidPasswordMinLowerCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه کوچک باشد.
+invalidPasswordMinUpperCaseCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} نویسه بزرگ باشد.
+invalidPasswordMinSpecialCharsMessage=رمز عبور نامعتبر: باید حداقل دارای {0} کاراکتر خاص باشد.
+invalidPasswordNotUsernameMessage=رمز عبور نامعتبر: نباید برابر با نام کاربری باشد.
+invalidPasswordNotEmailMessage=رمز عبور نامعتبر: نباید برابر با ایمیل باشد.
+invalidPasswordRegexPatternMessage=رمز عبور نامعتبر: با الگو(های) regex مطابقت ندارد.
+invalidPasswordHistoryMessage=گذرواژه نامعتبر: نباید با هیچ یک از رمزهای عبور اخیر {0} برابر باشد.
+invalidPasswordGenericMessage=رمز عبور نامعتبر: رمز عبور جدید با خط مشی های رمز عبور مطابقت ندارد.
+
+failedToProcessResponseMessage=پاسخ پردازش نشد
+httpsRequiredMessage=HTTPS مورد نیاز است
+realmNotEnabledMessage=قلمرو فعال نیست
+invalidRequestMessage=درخواست نامعتبر
+successLogout=شما از سیستم خارج شده اید
+failedLogout=خروج ناموفق بود
+unknownLoginRequesterMessage=درخواست کننده ورود نامشخص
+loginRequesterNotEnabledMessage=درخواست کننده ورود فعال نیست
+bearerOnlyMessage=برنامه های فقط حامل مجاز به شروع ورود به مرورگر نیستند
+standardFlowDisabledMessage=مشتری مجاز به شروع ورود به مرورگر با response_type نیست. جریان استاندارد برای مشتری غیرفعال است.
+implicitFlowDisabledMessage=مشتری مجاز به شروع ورود به مرورگر با answer_type نیست. جریان ضمنی برای مشتری غیرفعال است.
+invalidRedirectUriMessage=uri تغییر مسیر نامعتبر است
+unsupportedNameIdFormatMessage=NameIDFormat پشتیبانی نشده
+invalidRequesterMessage=درخواست کننده نامعتبر است
+registrationNotAllowedMessage=ثبت نام مجاز نیست
+resetCredentialNotAllowedMessage=بازنشانی اعتبار مجاز نیست
+
+permissionNotApprovedMessage=مجوز تایید نشد
+noRelayStateInResponseMessage=هیچ حالت رله ای در پاسخ از ارائه دهنده هویت وجود ندارد.
+insufficientPermissionMessage=مجوزهای کافی برای پیوند دادن هویت ها وجود ندارد.
+couldNotProceedWithAuthenticationRequestMessage=نمی‌توان با درخواست احراز هویت به ارائه‌دهنده هویت ادامه داد.
+couldNotObtainTokenMessage=رمز از ارائه دهنده هویت دریافت نشد.
+unexpectedErrorRetrievingTokenMessage=خطای غیرمنتظره هنگام بازیابی رمز از ارائه دهنده هویت.
+unexpectedErrorHandlingResponseMessage=خطای غیرمنتظره هنگام رسیدگی به پاسخ ارائه‌دهنده هویت.
+identityProviderAuthenticationFailedMessage=احراز هویت ناموفق بود. با ارائه‌دهنده هویت احراز هویت امکان‌پذیر نیست.
+couldNotSendAuthenticationRequestMessage=درخواست احراز هویت به ارائه دهنده هویت ارسال نشد.
+unexpectedErrorHandlingRequestMessage=خطای غیرمنتظره هنگام رسیدگی به درخواست احراز هویت به ارائه‌دهنده هویت.
+invalidAccessCodeMessage=کد دسترسی نامعتبر.
+sessionNotActiveMessage=نشست فعال نیست
+invalidCodeMessage=خطایی رخ داده است، لطفاً دوباره از طریق برنامه خود وارد شوید.
+cookieNotFoundMessage=کوکی پیدا نشد لطفا مطمئن شوید که کوکی ها در مرورگر شما فعال هستند.
+insufficientLevelOfAuthentication=سطح درخواستی احراز هویت برآورده نشده است.
+identityProviderUnexpectedErrorMessage=خطای غیرمنتظره هنگام احراز هویت با ارائه دهنده هویت
+identityProviderMissingStateMessage=پارامتر حالت در پاسخ از ارائه دهنده هویت وجود ندارد.
+identityProviderInvalidResponseMessage=پاسخ نامعتبر از ارائه دهنده هویت.
+identityProviderInvalidSignatureMessage=امضای نامعتبر در پاسخ از ارائه دهنده هویت.
+identityProviderNotFoundMessage=ارائه دهنده هویت با شناسه یافت نشد.
+identityProviderLinkSuccess=شما با موفقیت ایمیل خود را تأیید کردید. لطفاً به مرورگر اصلی خود برگردید و در آنجا با ورود به سیستم ادامه دهید.
+staleCodeMessage=این صفحه دیگر معتبر نیست، لطفاً به برنامه خود برگردید و دوباره وارد شوید
+realmSupportsNoCredentialsMessage=قلمرو از هیچ نوع اعتبارنامه ای پشتیبانی نمی کند.
+credentialSetupRequired=نمی توان به سیستم وارد شد، راه اندازی اعتبارنامه لازم است.
+identityProviderNotUniqueMessage=قلمرو از چندین ارائه دهنده هویت پشتیبانی می کند. نمی توان تعیین کرد که با کدام ارائه دهنده هویت باید برای احراز هویت استفاده شود.
+emailVerifiedMessage=آدرس ایمیل شما تایید شده است.
+staleEmailVerificationLink=پیوندی که روی آن کلیک کردید یک پیوند قدیمی است و دیگر معتبر نیست. شاید قبلا ایمیل خود را تایید کرده باشید.
+identityProviderAlreadyLinkedMessage=هویت فدرال بازگردانده شده توسط {0} قبلاً به کاربر دیگری پیوند داده شده است.
+confirmAccountLinking=پیوند حساب {0} ارائه دهنده هویت {1} را با حساب خود تأیید کنید.
+confirmEmailAddressVerification=اعتبار آدرس ایمیل {0} را تأیید کنید.
+confirmExecutionOfActions=عمل(های) زیر را انجام دهید
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fa=فارسی
+locale_fi=Suomi
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_pt-BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+
+backToApplication=&laquo; بازگشت به برنامه
+missingParameterMessage=پارامترهای از دست رفته\: {0}
+clientNotFoundMessage=مشتری یافت نشد
+clientDisabledMessage=مشتری غیرفعال است.
+invalidParameterMessage=پارامتر نامعتبر\: {0}
+alreadyLoggedIn=شما پیشتر وارد شدهاید - لاگین کرده اید.
+differentUserAuthenticated=شما قبلاً به عنوان کاربر دیگری ''{0}'' در این جلسه احراز هویت شده اید. لطفا ابتدا از سیستم خارج شوید.
+brokerLinkingSessionExpired=درخواست پیوند حساب کارگزاری داده است، اما جلسه فعلی دیگر معتبر نیست.
+proceedWithAction=&raquo; برای ادامه اینجا را کلیک کنید
+acrNotFulfilled=الزامات احراز هویت برآورده نشده است
+
+requiredAction.CONFIGURE_TOTP=OTP را تنظیم کنید
+requiredAction.TERMS_AND_CONDITIONS=شرایط و ضوابط
+requiredAction.UPDATE_PASSWORD=رمز عبور را به روز کنید
+requiredAction.UPDATE_PROFILE=بروزرسانی پروفایل
+requiredAction.VERIFY_EMAIL=تأیید ایمیل
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=کدهای بازیابی را ایجاد کنید
+requiredAction.webauthn-register-passwordless=Webauthn ثبت نام بدون رمز عبور
+
+invalidTokenRequiredActions=اقدامات لازم موجود در پیوند معتبر نیستند
+
+doX509Login=شما به عنوان\: وارد سیستم خواهید شد:
+clientCertificate=گواهی مشتری X509\:
+noCertificate=[بدون گواهی]
+
+
+pageNotFound=صفحه یافت نشد
+internalServerError=یک خطای سرور داخلی رخ داده است
+
+console-username=نام کاربری:
+console-password=رمز عبور:
+console-otp=رمز عبور یکبار مصرف:
+console-new-password=رمز عبور جدید:
+console-confirm-password=تایید رمز عبور:
+console-update-password=به روز رسانی رمز عبور شما الزامی است.
+console-verify-email=شما باید آدرس ایمیل خود را تأیید کنید. ما یک ایمیل به {0} ارسال کردیم که حاوی کد تأیید است. لطفا این کد را در ورودی زیر وارد کنید.
+console-email-code=کد ایمیل:
+console-accept-terms=شرایط را می‌پذیرید؟ [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=اطلاعات کاربر
+openshift.scope.user_check-access=اطلاعات دسترسی کاربر
+openshift.scope.user_full=دسترسی کامل
+openshift.scope.list-projects=لیست پروژه ها
+
+# SAML authentication
+saml.post-form.title=تغییر مسیر احراز هویت
+saml.post-form.message=در حال تغییر مسیر، لطفا صبر کنید.
+saml.post-form.js-disabled=جاوا اسکریپت غیرفعال است. ما قویاً توصیه می کنیم آن را فعال کنید. برای ادامه روی دکمه زیر کلیک کنید.
+saml.artifactResolutionServiceInvalidResponse=قادر به حل مصنوع نیست.
+
+#authenticators
+otp-display-name=برنامه Authenticator
+otp-help-text=یک کد تأیید را از برنامه احراز هویت وارد کنید.
+password-display-name=رمز عبور
+password-help-text=با وارد کردن رمز عبور خود وارد شوید.
+auth-username-form-display-name=نام کاربری
+auth-username-form-help-text=با وارد کردن نام کاربری خود وارد سیستم شوید
+auth-username-password-form-display-name=نام کاربری و رمز عبور
+auth-username-password-form-help-text=با وارد کردن نام کاربری و رمز عبور خود وارد شوید.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=کد احراز هویت بازیابی
+auth-recovery-authn-code-form-help-text=یک کد احراز هویت بازیابی را از لیستی که قبلا ایجاد شده است وارد کنید.
+auth-recovery-code-info-message=کد بازیابی مشخص شده را وارد کنید.
+auth-recovery-code-prompt=کد بازیابی #{0}
+auth-recovery-code-header=با یک کد احراز هویت بازیابی وارد شوید
+recovery-codes-error-invalid=کد احراز هویت بازیابی نامعتبر است
+recovery-code-config-header=کدهای احراز هویت بازیابی
+recovery-code-config-warning-title=این کدهای بازیابی پس از خروج از این صفحه دیگر ظاهر نمی شوند
+recovery-code-config-warning-message=مطمئن شوید که آنها را چاپ، دانلود یا در یک مدیر رمز عبور کپی کنید و ذخیره کنید. لغو این تنظیم، این کدهای بازیابی را از حساب شما حذف می کند.
+recovery-codes-print=چاپ
+recovery-codes-download=دانلود
+recovery-codes-copy=کپی
+recovery-codes-copied=کپی شد
+recovery-codes-confirmation-message=من این کدها را در جایی امن ذخیره کرده ام
+recovery-codes-action-complete=راه اندازی کامل
+recovery-codes-action-cancel=لغو راه اندازی
+recovery-codes-download-file-header=این کدهای بازیابی را در جایی امن نگه دارید.
+recovery-codes-download-file-description=کدهای بازیابی گذرواژه های یکبار مصرف هستند که به شما امکان می دهند در صورت عدم دسترسی به احراز هویت خود وارد حساب کاربری خود شوید.
+recovery-codes-download-file-date= این کدها در تاریخ تولید شدند
+recovery-codes-label-default=کدهای بازیابی
+
+# WebAuthn
+webauthn-display-name=کلید امنیتی
+webauthn-help-text=برای ورود به سیستم از کلید امنیتی خود استفاده کنید.
+webauthn-passwordless-display-name=کلید امنیتی
+webauthn-passwordless-help-text=از کلید امنیتی خود برای ورود بدون رمز عبور استفاده کنید.
+webauthn-login-title=ورود به سیستم کلید امنیتی
+webauthn-registration-title=ثبت کلید امنیتی
+webauthn-available-authenticators=کلیدهای امنیتی موجود
+webauthn-unsupported-browser-text=WebAuthn توسط این مرورگر پشتیبانی نمی شود. یکی دیگر را امتحان کنید یا با سرپرست خود تماس بگیرید.
+webauthn-doAuthenticate=با کلید امنیتی وارد شوید
+webauthn-createdAt-label=ایجاد شده در
+
+# WebAuthn Error
+webauthn-error-title=خطای کلید امنیتی
+webauthn-error-registration=کلید امنیتی شما ثبت نشد.<br/> {0}
+webauthn-error-api-get=با کلید امنیتی احراز هویت انجام نشد.<br/> {0}
+webauthn-error-different-user=اولین کاربر احراز هویت شده کسی نیست که توسط کلید امنیتی احراز هویت شده است.
+webauthn-error-auth-verification=نتیجه احراز هویت کلید امنیتی نامعتبر است.<br/> {0}
+webauthn-error-register-verification=نتیجه ثبت کلید امنیتی نامعتبر است.<br/> {0}
+webauthn-error-user-not-found=کاربر ناشناس با کلید امنیتی احراز هویت شده است.
+
+# Identity provider
+identity-provider-redirector=با یک ارائه‌دهنده هویت دیگر ارتباط برقرار کنید
+identity-provider-login-label=یا با وارد شوید
+idp-email-verification-display-name=تایید ایمیل
+idp-email-verification-help-text=حساب خود را با اعتبارسنجی ایمیل خود پیوند دهید.
+idp-username-password-form-display-name=نام کاربری و رمز عبور
+idp-username-password-form-help-text=با ورود حساب کاربری خود را پیوند دهید.
+
+finalDeletionConfirmation=اگر حساب خود را حذف کنید، قابل بازیابی نیست. برای حفظ حساب خود، روی لغو کلیک کنید.
+irreversibleAction=این عمل برگشت ناپذیر است
+deleteAccountConfirm=تایید حذف حساب
+
+deletingImplies=حذف حساب به این معنی است:
+errasingData=پاک کردن تمام داده های شما
+loggingOutImmediately=خروج بلافاصله شما
+accountUnusable=هر گونه استفاده بعدی از برنامه با این حساب امکان پذیر نخواهد بود
+userDeletedSuccessfully=کاربر با موفقیت حذف شد
+
+access-denied=دسترسی رد شد
+access-denied-when-idp-auth=هنگام احراز هویت با {0}، دسترسی ممنوع شد
+
+frontchannel-logout.title=خروج از سیستم
+frontchannel-logout.message=شما در حال خروج از برنامه های زیر هستید
+logoutConfirmTitle=خروج
+logoutConfirmHeader=آیا می خواهید از سیستم خارج شوید؟
+doLogout=خروج
+
+readOnlyUsernameMessage=شما نمی توانید نام کاربری خود را به روز کنید زیرا فقط خواندنی است.
diff --git a/themes/custom-theme-template/login/messages/messages_fi.properties b/themes/custom-theme-template/login/messages/messages_fi.properties
new file mode 100644
index 0000000000000000000000000000000000000000..e734a7a849dd7ef1ecba93777970d0f3ce89981e
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_fi.properties
@@ -0,0 +1,420 @@
+doLogIn=Kirjaudu
+doRegister=Rekisteröidy
+doRegisterSecurityKey=Rekisteröidy
+doCancel=Peruuta
+doSubmit=Lähetä
+doBack=Takaisin
+doYes=Kyllä
+doNo=Ei
+doContinue=Jatka
+doIgnore=Sivuuta
+doAccept=Hyväksy
+doDecline=En hyväksy
+doForgotPassword=Unohditko salasanan?
+doClickHere=Klikkaa tästä
+doImpersonate=Edusta
+doTryAgain=Yritä uudelleen
+doTryAnotherWay=Yritä toista tapaa
+doConfirmDelete=Vahvista poisto
+errorDeletingAccount=Tilin poistossa tapahtui virhe
+deletingAccountForbidden=Sinulla ei ole riittäviä oikeuksia poistaakseesi omaa tiliä, ota yhteyttä järjestelmänvalvojaan.
+kerberosNotConfigured=Kerberosta ei ole konfiguroitu
+kerberosNotConfiguredTitle=Kerberosta ei ole konfiguroitu
+bypassKerberosDetail=Joko et ole kirjautunut Kerberoksen kautta tai selaintasi ei ole asetettu käyttämään Kerberosta kirjautumiseen.  Klikkaa jatkaaksesi kirjautumista jollain toisella tavalla
+kerberosNotSetUp=Kerberosta ei ole asennettu.  Et voi kirjautua sisään.
+registerTitle=Rekisteröidy
+loginAccountTitle=Kirjaudu sisään
+loginTitle=Kirjaudu {0}
+loginTitleHtml={0}
+impersonateTitle={0} Edusta käyttäjää
+impersonateTitleHtml=<strong>{0}</strong> Edusta käyttäjää
+realmChoice=Realm
+unknownUser=Tuntematon käyttäjä
+loginTotpTitle=Mobiili-todentajan asetukset
+loginProfileTitle=Päivitä käyttäjätilin tiedot
+loginIdpReviewProfileTitle=Päivitä käyttäjätilin tiedot
+loginTimeout=Kirjautumisyritys kesti liian kauan. Kirjautuminen aloitetaan alusta.
+oauthGrantTitle=Myönnä pääsy {0}
+oauthGrantTitleHtml={0}
+errorTitle=Pahoittelut...
+errorTitleHtml=Olemme <strong>pahoillamme</strong> ...
+emailVerifyTitle=Sähköpostiosoitteen varmistus
+emailForgotTitle=Unohditko salasanasi?
+updatePasswordTitle=Päivitä salasana
+codeSuccessTitle=Success-koodi
+codeErrorTitle=Virhekoodi: {0}
+displayUnsupported=Pyydetty näyttötyyppi ei ole tuettu
+browserRequired=Selain vaatii sisäänkirjautumista
+browserContinue=Selain vaatii sisäänkirjautumisen viimeistelyä
+browserContinuePrompt=Avaa selain ja jatka kirjautumista? [k/e]:
+browserContinueAnswer=k
+
+
+termsTitle=Käyttöehdot
+termsText=<p>Käyttöehdot ja niiden määrittely</p>
+termsPlainText=Käyttöehdot ja niiden määrittely.
+
+recaptchaFailed=Virheellinen Recaptcha
+recaptchaNotConfigured=Recaptcha vaaditaan, mutta sitä ei ole konfiguroitu
+consentDenied=Suostumus kielletty.
+
+noAccount=Uusi käyttäjä?
+username=Käyttäjätunnus
+usernameOrEmail=Käyttäjätunnus tai sähköpostiosoite
+firstName=Etunimi
+givenName=Sukunimi
+fullName=Koko nimi
+lastName=Sukunimi
+familyName=Sukunimi
+email=Sähköposti
+password=Salasana
+passwordConfirm=Salasana uudelleen
+passwordNew=Uusi salasana
+passwordNewConfirm=Uusi salasana uudelleen
+rememberMe=Muista minut
+authenticatorCode=Kertakäyttökoodi
+address=Osoite
+street=Katu
+locality=Kaupunki
+region=Osavaltio, Provinssi, tai Alue
+postal_code=Postinumero
+country=Maa
+emailVerified=Sähköposti vahvistettu
+website=Verkkosivu
+phoneNumber=Puhelinnumero
+phoneNumberVerified=Puhelinnumero varmennettu
+gender=Sukupuoli
+birthday=Syntymäpäivä
+zoneinfo=Aikavyöhyke
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=Kirjaudu ulos muilta laitteilta
+
+profileScopeConsentText=Käyttäjän profiili
+emailScopeConsentText=Sähköpostiosoite
+addressScopeConsentText=Osoite
+phoneScopeConsentText=Puhelinnumero
+offlineAccessScopeConsentText=Offline-käyttö
+samlRoleListScopeConsentText=Omat roolit
+rolesScopeConsentText=Käyttäjäroolit
+
+restartLoginTooltip=Aloita kirjautuminen alusta
+
+loginTotpIntro=Sinun täytyy asentaa OTP (One Time Password) luontityökalu päästäksesi tälle tilille
+loginTotpStep1=Asenna yksi seuraavista sovelluksista puhelimeesi:
+loginTotpStep2=Avaa sovellus ja skannaa viivakoodi
+loginTotpStep3=Liitä sovelluksesta saatu kertaluontoinen koodi ja paina Lähetä viimeistelläksesi asennuksen
+loginTotpStep3DeviceName=Anna laitteelle nimi, jotta voit hallinnoida OTP-laitteitasi.
+loginTotpManualStep2=Avaa sovellus ja liitä avain
+loginTotpManualStep3=Käytä seuraavia konfiguraatioarvoja jos sovellus antaa asettaa ne:
+loginTotpUnableToScan=Ongelmia skannauksessa?
+loginTotpScanBarcode=Skannaa viivakoodi?
+loginCredential=Kirjautumistieto
+loginTotpOneTime=Kertaluontoinen koodi
+loginTotpType=Tyyppi
+loginTotpAlgorithm=Algoritmi
+loginTotpDigits=Numerot
+loginTotpInterval=Intervalli
+loginTotpCounter=Laskuri
+loginTotpDeviceName=Laitteen nimi
+
+loginTotp.totp=Aikapohjainen
+loginTotp.hotp=Laskuripohjainen
+
+loginChooseAuthenticator=Valitse kirjautumistapa
+
+oauthGrantRequest=Myönnätkö nämä käyttöoikeudet?
+inResource=in
+
+oauth2DeviceVerificationTitle=Laitekirjautuminen
+verifyOAuth2DeviceUserCode=Liitä laitteeltasi saamasi kertaluontoinen koodi ja paina Lähetä
+oauth2DeviceInvalidUserCodeMessage=Virheellinen koodi. yritä uudelleen.
+oauth2DeviceExpiredUserCodeMessage=Koodi on vanhentunut. Ole hyvä ja mene takaisin laitteellesi ja yritä yhdistämistä uudellleen.
+oauth2DeviceVerificationCompleteHeader=Laitekirjautuminen onnistui
+oauth2DeviceVerificationCompleteMessage=Voit sulkea tämän ikkunan ja mennä takaisin laitteellesi.
+oauth2DeviceVerificationFailedHeader=Laitekirjautuminen epäonnistui
+oauth2DeviceVerificationFailedMessage=Voit sulkea tämän ikkunan, mennä takaisin laitteellesi ja yrittää kirjautumista uudelleen.
+oauth2DeviceConsentDeniedMessage=Laitteen kirjautumisen suostumus evätty.
+oauth2DeviceAuthorizationGrantDisabledMessage=Client is not allowed to initiate OAuth 2.0 Device Authorization Grant. The flow is disabled for the client.
+
+emailVerifyInstruction1=Sähköpostin vahvistamisohjeet sisältävä viesti on lähetetty sähköpostiisi.
+emailVerifyInstruction2=Etkö ole saanut vahvistuskoodia sähköpostiisi?
+emailVerifyInstruction3=saadaksesi uuden sähköpostiviestin.
+
+emailLinkIdpTitle=Linkitä {0}
+emailLinkIdp1=Sinulle on lähetetty ohjeet tunnuksen linkittämiseen palvelun {0} kanssa.
+emailLinkIdp2=Etkö saanut vahvistuskoodia sähköpostiisi?
+emailLinkIdp3=saadaksesi uuden sähköpostiviestin.
+emailLinkIdp4=Jos olet jo vahvistanut sähköpostisi toisella selaimella,
+emailLinkIdp5=jatkaaksesi.
+
+backToLogin=&laquo; Takaisin kirjautumiseen
+
+emailInstruction=Syötä käyttäjätunnuksesi tai sähköpostiosoitteesi niin lähetämme sinulle ohjeet salasanan palauttamista varten.
+emailInstructionUsername=Syötä käyttäjänimesi niin lähetämme sinulle ohjeet uuden salasanan luomiseksi.
+
+copyCodeInstruction=Ole hyvä ja kopioi tämä koodi ja liitä se sovellukseesi:
+
+pageExpiredTitle=Sivu on vanhentunut
+pageExpiredMsg1=Aloita kirjautuminen alusta
+pageExpiredMsg2=Jatka kirjautumista
+
+personalInfo=Henkilökohtaiset tiedot:
+role_admin=Järjestelmänvalvoja
+role_realm-admin=Realm Järjestelmänvalvoja
+role_create-realm=Luo realm
+role_create-client=Luo asiakas
+role_view-realm=Näytä realm
+role_view-users=Näytä käyttäjät
+role_view-applications=Näytä sovellukset
+role_view-clients=Näytä asiakkaat
+role_view-events=Näytä tapahtumat
+role_view-identity-providers=Näytä henkilöllisyyden tarjoajat
+role_manage-realm=Hallinnoi realmia
+role_manage-users=Hallinnoi käyttäjiä
+role_manage-applications=Hallinnoi sovelluksia
+role_manage-identity-providers=Hallinnoi henkilöllisyyden tarjoajia
+role_manage-clients=Hallinnoi asiakkaita
+role_manage-events=Hallinnoi tapahtumia
+role_view-profile=Näytä profiili
+role_manage-account=Hallitse tiliä
+role_manage-account-links=Hallitse tilin linkkejä
+role_read-token=Lue token
+role_offline-access=Offline-pääsy
+client_account=Tili
+client_account-console=Tilin konsoli
+client_security-admin-console=Turvallisuus-hallintapaneeli
+client_admin-cli=Admin CLI
+client_realm-management=Realm Hallinta
+client_broker=Broker
+
+requiredFields=Vaaditut kentät
+
+invalidUserMessage=Virheellinen käyttäjätunnus tai salasana.
+invalidUsernameMessage=Väärä salasana.
+invalidUsernameOrEmailMessage=Väärä salasana tai sähköposti.
+invalidPasswordMessage=Väärä salasana.
+invalidEmailMessage=Virheellinen sähköpostiosoite.
+accountDisabledMessage=Tili on poistettu käytöstä, ota yhteyttä järjestelmänvalvojaan.
+accountTemporarilyDisabledMessage=Tili on väliaikaisesti poissa käytöstä, ota yhteyttä järjestelmänvalvojaan tai yritä myöhemmin uudelleen.
+expiredCodeMessage=Kirjautuminen kesti liian kauan. Ole hyvä ja kirjaudu uudestaan.
+expiredActionMessage=Toiminto kesti liian kauan. Ole hyvä ja jatka kirjautumiseen.
+expiredActionTokenNoSessionMessage=Toiminto vanhentui.
+expiredActionTokenSessionExistsMessage=Toiminto vanhentui. Aloita alusta.
+
+missingFirstNameMessage=Anna etunimi.
+missingLastNameMessage=Anna sukunimi.
+missingEmailMessage=Anna sähköpostiosoite.
+missingUsernameMessage=Anna käyttäjätunnus.
+missingPasswordMessage=Anna salasana.
+missingTotpMessage=Ole hyvä ja määrittele todentajan koodi.
+missingTotpDeviceNameMessage=Ole hyvä ja määrittele laitteen nimi.
+notMatchPasswordMessage=Salasanat eivät täsmää.
+
+error-invalid-value=Väärä arvo.
+error-invalid-blank=Ole hyvä ja määritä arvo.
+error-empty=Ole hyvä ja määritä arvo. 
+error-invalid-length=Ominaisuudella {0} täytyy olla pituus väliltä {1} ja {2}.
+error-invalid-length-too-short=Ominaisuudella {0} täytyy olla minimipituus {1}.
+error-invalid-length-too-long=Ominaisuudella {0} täytyy olla maksimipituus {2}.
+error-invalid-email=Väärä sähköpostiosoite.
+error-invalid-number=Väärä numero.
+error-number-out-of-range=Ominaisuuden {0} täytyy olla numero väliltä {1} ja {2}.
+error-number-out-of-range-too-small=Ominaisuudella {0} täytyy olla minimiarvona {1}.
+error-number-out-of-range-too-big=Ominaisuudella {0} täytyy olla maksimiarvona {2}.
+error-pattern-no-match=Väärä arvo.
+error-invalid-uri=Väärä URL.
+error-invalid-uri-scheme=Väärä URL:n malli.
+error-invalid-uri-fragment=Väärä URL:n osa.
+error-user-attribute-required=Ole hyvä ja määritä ominaisuus {0}.
+error-invalid-date=Väärä päivämäärä.
+error-user-attribute-read-only=Kenttä {0} on "vain luku"-tilassa.
+error-username-invalid-character=Käyttäjänimi sisältää vääriä merkkejä.
+error-person-name-invalid-character=Nimi sisältää vääriä merkkejä.
+
+invalidPasswordExistingMessage=Vanha salasana on virheellinen.
+invalidPasswordBlacklistedMessage=Väärä salasana: salasana on lisätty mustalle listalle.
+invalidPasswordConfirmMessage=Salasanan vahvistus ei täsmää.
+invalidTotpMessage=Väärä todentaja-koodi.
+
+usernameExistsMessage=Käyttäjänimi on varattu.
+emailExistsMessage=Sähköpostiosoite on jo käytössä.
+
+federatedIdentityExistsMessage=Käyttäjä {0} {1} on jo olemassa. Kirjaudu tilihallintaan linkittääksesi tilin.
+federatedIdentityUnavailableMessage=Käyttäjä {0} joka on tunnistettu henkilöllisyyden tarjoajalla {1} ei ole olemassa. Ota yhteyttä järjestelmänvalvojaan.
+
+confirmLinkIdpTitle=Käyttäjätunnus on jo olemassa
+federatedIdentityConfirmLinkMessage=Käyttäjätunnus, jolla {0} on {1} on jo olemassa. Kuinka haluat jatkaa?
+federatedIdentityConfirmReauthenticateMessage=Tunnistaudu linkittääksesi {0}-tilin.
+nestedFirstBrokerFlowMessage={0} käyttäjä {1} ei ole linkitetty tunnettuun käyttäjään.
+confirmLinkIdpReviewProfile=Tarkastele profiilia
+confirmLinkIdpContinue=Lisää olemassa olevaan tiliin
+
+configureTotpMessage=Sinun täytyy asentaa mobiili-todentaja aktivoidaksesi tilin.
+updateProfileMessage=Sinun tulee päivittää profiilisi aktivoidaksesi tilisi.
+updatePasswordMessage=Sinun tulee vaihtaa salasanasi aktivoidaksesi tilisi.
+resetPasswordMessage=Sinun tulee päivittää salasanasi.
+verifyEmailMessage=Sinun tulee vahvistaa sähköpostiosoitteesi aktivoidaksesi tilisi.
+linkIdpMessage=Sinun tulee vahvistaa sähköpostiosoitteesi linkittääksesi tilin palvelun {0} kanssa.
+
+emailSentMessage=Sinun pitäisi saada sähköpostiisi lisäohjeita hetken kuluttua.
+emailSendErrorMessage=Sähköpostin lähettäminen epäonnistui. Yritä hetken kuluttua uudelleen.
+
+accountUpdatedMessage=Käyttäjätiedot päivitetty.
+accountPasswordUpdatedMessage=Salasana vaihdettu.
+
+delegationCompleteHeader=Kirjautuminen onnistui
+delegationCompleteMessage=Voit sulkea tämän ikkunan ja siirtyä takaisin konsolisovellukseen.
+delegationFailedHeader=Kirjautuminen epäonnistui
+delegationFailedMessage=Voit sulkea tämän selaimen, siirtyä takaisin konsolisovellukseen ja yrittää kirjautumista uudelleen.
+
+noAccessMessage=Ei pääsyä
+
+invalidPasswordMinLengthMessage=Virheellinen salasana: vähimmäispituus {0}.
+invalidPasswordMaxLengthMessage=Virheellinen salasana: maksimipituus {0}.
+invalidPasswordMinDigitsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} numeroa.
+invalidPasswordMinLowerCaseCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} pientä kirjainta.
+invalidPasswordMinUpperCaseCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} isoa kirjainta.
+invalidPasswordMinSpecialCharsMessage=Virheellinen salasana: salasanassa tulee olla vähintään {0} erikoismerkkiä.
+invalidPasswordNotUsernameMessage=Virheellinen salasana: salasana ei saa olla sama kuin käyttäjätunnus.
+invalidPasswordNotEmailMessage=Virheellinen salasana: ei voi olla sama kuin sähköposti.
+invalidPasswordRegexPatternMessage=Virheellinen salasana: ei vastaa "regex pattern(s)".
+invalidPasswordHistoryMessage=Virheellinen salasana: salasana ei saa olla sama kuin {0} edellistä salasanaasi.
+invalidPasswordGenericMessage=Virheellinen salasana: uusi salasana ei täytä salasanavaatimuksia.
+
+failedToProcessResponseMessage=Vastauksen käsittely epäonnistui
+httpsRequiredMessage=HTTPS vaaditaan
+realmNotEnabledMessage=Realm ei otettu käyttöön
+invalidRequestMessage=Virheellinen pyyntö
+failedLogout=Uloskirjautuminen epäonnistui
+unknownLoginRequesterMessage=Tuntematon kirjautumispyynnön tekijä
+loginRequesterNotEnabledMessage=kirjautumispyynnön tekijää ei ole otettu käyttöön
+bearerOnlyMessage="Bearer-only" sovellusten ei ole sallittua aloittaa selainkirjautumista
+standardFlowDisabledMessage=Asiakas ei saa aloittaa selainkirjautumista annetulla vastaustyypillä ("response_type"). "Standard flow" on poistettu käytöstä asiakkaalla.
+implicitFlowDisabledMessage=Asiakas ei saa aloittaa selainkirjautumista annetulla vastaustyypillä ("response_type"). "Implicit flow" on poistettu käytöstä asiakkaalla.
+invalidRedirectUriMessage=Virheellinen uudelleenohjaus-uri
+unsupportedNameIdFormatMessage=Ei-tuettu "NameIDFormat"
+invalidRequesterMessage=Virheellinen pyynnön tekijä
+registrationNotAllowedMessage=Rekisteröinti ei ole sallittu
+resetCredentialNotAllowedMessage=Kirjautumistietojen nollaus ei ole sallittu
+
+permissionNotApprovedMessage=Lupaa ei myönnetty
+noRelayStateInResponseMessage="relay state" puuttuu henkilöllisyyden tarjoajan vastauksesta.
+insufficientPermissionMessage=Riittämättömät oikeudet henkilöllisyyksien linkittämiseksi.
+couldNotProceedWithAuthenticationRequestMessage=Tunnistuspyyntöä henkilöllisyyden tarjoajalle ei voitu jatkaa.
+couldNotObtainTokenMessage=Ei voitu saada tokenia henkilöllisyyden tarjoajalta.
+unexpectedErrorRetrievingTokenMessage=Odottamaton virhe hankkiessa tokenia henkilöllisyyden tarjoajalta.
+unexpectedErrorHandlingResponseMessage=Odottamaton virhe käsiteltäessä vastausta henkilöllisyyden tarjoajalta.
+identityProviderAuthenticationFailedMessage=Tunnistautuminen epäonnistui. Ei voitu tunnistautua henkilöllisyyden tarjoajan kautta.
+identityProviderDifferentUserMessage=Tunnistautunut {0}, vaikka pitäisi olla tunnistautunut {1}
+couldNotSendAuthenticationRequestMessage=Ei voitu lähettää tunnistautumispyyntö henkilöllisyyden tarjoajalle.
+unexpectedErrorHandlingRequestMessage=Odottamaton virhe käsiteltäessä tunnistautumispyyntö henkilöllisyyden tarjoajalle.
+invalidAccessCodeMessage=Virheellinen pääsykoodi
+sessionNotActiveMessage=Istunto ei ole aktiivinen.
+invalidCodeMessage=Tapahtui virhe, ole hyvä ja kirjaudu uudelleen sovelluksesi kautta.
+identityProviderUnexpectedErrorMessage=Tunnistautumisen yhteydessä tapahtui virhe tunnistetietojen tarjoajan kanssa.
+identityProviderNotFoundMessage=Tunnisteella ei löytynyt henkilöllisyyden tarjoajaa.
+identityProviderLinkSuccess=Sähköpostin vahvistus onnistui Ole hyvä ja palaa alkuperäiseen selainikkunaan jatkaaksesi kirjautumista.
+staleCodeMessage=Tämä sivu ei ole enää voimassa, ole hyvä ja palaa sovellukseesi ja kirjaudu uudelleen
+realmSupportsNoCredentialsMessage=Realm ei tue mitään kirjautumistiedon tyyppiä.
+credentialSetupRequired=Ei voida kirjautua, kirjautumistietojen asetukset vaaditaan.
+identityProviderNotUniqueMessage=Realm tukee useita henkilöllisyyden tarjoajia. Ei voitu määrittää, mitä henkilöllisyyden tarjoajaa pitäisi käyttää tunnistautumiseen.
+emailVerifiedMessage=Sähköpostisi on vahvistettu.
+staleEmailVerificationLink=Klikkaamasi linkki on vanhentunut eikä enää toimi. Oletko jo vahvistanut sähköpostisi?
+identityProviderAlreadyLinkedMessage=Yhdistetty henkilöllisyys, minkä {0} palautti, on jo linkitetty toiseen käyttäjään.
+confirmAccountLinking=Vahvista tilin {0} linkitys, henkilöllisyyden tarjoajalta {1}, tiliisi.
+confirmEmailAddressVerification=Vahvista sähköpostiosoitteen {0} voimassaolo.
+confirmExecutionOfActions=Suorita seuraavat toiminnot
+
+backToApplication=&laquo; Takaisin sovellukseen
+missingParameterMessage=Puuttuva parametri\: {0}
+clientNotFoundMessage=Asiakasta ei löytynyt.
+clientDisabledMessage=Asiakas ei ole käytössä.
+invalidParameterMessage=Epäkelpo parametri\: {0}
+alreadyLoggedIn=Olet jo kirjautunut sisään
+differentUserAuthenticated=Olet kirjautunut sisään tilillä ''{0}''. Ole hyvä ja kirjaudu ulos ensin.
+brokerLinkingSessionExpired=Pyysit tilin yhdistämistä mutta sessio on vanhentunut.
+proceedWithAction=&raquo; Klikkaa tästä jatkaaksesi
+
+requiredAction.CONFIGURE_TOTP=Konfiguroi OTP
+requiredAction.TERMS_AND_CONDITIONS=Käyttöehdot
+requiredAction.UPDATE_PASSWORD=Päivitä salasana
+requiredAction.UPDATE_PROFILE=Päivitä profiili
+requiredAction.VERIFY_EMAIL=Vahvista sähköposti
+
+doX509Login=Kirjaudut sisään nimellä\:
+clientCertificate=X509 asiakas-varmenne\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=Sivua ei löytynyt
+internalServerError=Tapahtui sisäinen virhe palvelimella.
+
+console-username=Käyttäjänimi:
+console-password=Salasana:
+console-otp=One Time Password:
+console-new-password=Uusi salasana:
+console-confirm-password=Vahvista salana:
+console-update-password=Salasanan päivitys vaaditaan.
+console-verify-email=Sinun täytyy vahvistaa sähköpostiosoitteesi.  Sähköposti, mikä sisältää vahvistuskoodin, on lähetetty osoitteeseen {0}.  Ole hyvä ja kirjoita tämä koodi alapuolella olevaan kenttään.
+console-email-code=Sähköposti-koodi:
+console-accept-terms=Hyväksy käyttöehdot? [k/e]:
+console-accept=k
+
+# Openshift messages
+openshift.scope.user_info=Käyttäjän tiedot
+openshift.scope.user_check-access=Käyttäjän käyttöoikeustiedot
+openshift.scope.user_full=Täysi käyttöoikeus
+openshift.scope.list-projects=Listaa projektit
+# SAML authentication
+saml.post-form.title=Tunnistautumisen uudelleenohjaus
+saml.post-form.message=Uudelleenohjataan, odota hetki..
+saml.post-form.js-disabled=JavaScript on pois käytöstä. Suosittelemme vahvasti sen käyttöönottoa. Klikkaa alla olevaa nappia jatkaaksesi. 
+saml.artifactResolutionServiceInvalidResponse=Unable to resolve artifact.
+
+#authenticators
+otp-display-name=Todentajasovellus
+otp-help-text=Syötä todentajasovelluksen tarjoama vahvistuskoodi.
+password-display-name=Salasana
+password-help-text=Kirjaudu sisään syöttämällä salasanasi.
+auth-username-form-display-name=Käyttäjänimi
+auth-username-form-help-text=Aloita kirjautuminen syöttämällä käyttäjänimesi
+auth-username-password-form-display-name=käyttäjänimi ja salasana
+auth-username-password-form-help-text=Kirjaudu sisään syöttämällä käyttäjänimi ja salasana.
+
+# WebAuthn
+webauthn-display-name=Turva-avain
+webauthn-help-text=Käytä Turva-avaintasi kirjatuaksesi sisään.
+webauthn-passwordless-display-name=Turva-avain
+webauthn-passwordless-help-text=Käytä Turva-avaintasi kirjatuaksesi sisään ilman salasanaa.
+webauthn-login-title=Turva-avain kirjautuminen
+webauthn-registration-title=Turva-avain rekisteröinti
+webauthn-available-authenticators=Saatavilla olevat todentajat
+webauthn-unsupported-browser-text="WebAuthn" ei ole tuettu tällä selaimella. Kokeile jotain toista tai ota yhteyttä järjestelmänvalvojaan.
+webauthn-doAuthenticate=Kirjaudu sisään Turva-avaimella
+
+# WebAuthn Error
+webauthn-error-title=Turva-avain virhe
+webauthn-error-registration=Turva-avaimen rekisteröinti epäonnistui.<br/> {0}
+webauthn-error-api-get=Tunnistautuminen Turva-avaimella epäonnistui.<br/> {0}
+webauthn-error-different-user=Ensiksi tunnistautunut käyttäjä ei ole sama kuin Turva-avaimella tunnistaunut.
+webauthn-error-auth-verification=Turva-avain -tunnistautumisen tulos on virheellinen.<br/> {0}
+webauthn-error-register-verification=Turva-avaimen rekisteröinnin tulos on virheellinen.<br/> {0}
+webauthn-error-user-not-found=Tuntematon käyttäjä tunnistautui Turva-avaimella.
+
+# Identity provider
+identity-provider-redirector=Yhdistä käyttämällä toista henkilöllisyyden tarjoajaa
+identity-provider-login-label=Tai kirjaudu jollain näistä:
+
+finalDeletionConfirmation=Jos poistat tilisi, sitä ei voida enää palauttaa. Säilyttääksesi tilisi, paina Peruuta.
+irreversibleAction=Tätä toimintoa ei voi peruuttaa
+deleteAccountConfirm=Tilin poistamisen vahvistus
+
+deletingImplies=Tilin poisto tarkoittaa sitä, että:
+errasingData=Kaikki tietosi poistetaan
+loggingOutImmediately=Sinut kirjataan ulos välittömästi
+accountUnusable=Tämän sovelluksen käyttö ei myöhemmin enää ole mahdollista tällä käyttäjätilillä
+userDeletedSuccessfully=Käyttäjä poistettu onnistuneesti
+
+access-denied=Pääsy evätty
+
+readOnlyUsernameMessage=Et voi päivittää käyttäjänimeäsi, koska se on "vain-luku"-tilassa.
diff --git a/themes/custom-theme-template/login/messages/messages_fr.properties b/themes/custom-theme-template/login/messages/messages_fr.properties
new file mode 100644
index 0000000000000000000000000000000000000000..19aa1dc17461c449a2d5b2bd6c8cbde96df09379
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_fr.properties
@@ -0,0 +1,437 @@
+doLogIn=Connexion
+doRegister=Enregistrement
+doRegisterSecurityKey=Enregistrement
+doCancel=Annuler
+doSubmit=Soumettre
+doBack=Retour
+doYes=Oui
+doNo=Non
+doContinue=Continuer
+doIgnore=Ignorer
+doAccept=Accepter
+doDecline=Décliner
+doForgotPassword=Mot de passe oublié ?
+doClickHere=Cliquez ici
+doImpersonate=Usurper l''identité
+doTryAgain=Réessayer
+doTryAnotherWay=Essayer une autre méthode
+doConfirmDelete=Confirmer la suppression
+errorDeletingAccount=Erreur lors de la suppression du compte
+deletingAccountForbidden=Permissions insuffisantes pour supprimer votre propre compte, contactez un administrateur.
+kerberosNotConfigured=Kerberos non configuré
+kerberosNotConfiguredTitle=Kerberos non configuré
+bypassKerberosDetail=Si vous n''êtes pas connecté via Kerberos ou bien que votre navigateur n''est pas configuré pour la connexion via Kerberos.  Veuillez cliquer pour vous connecter via un autre moyen.
+kerberosNotSetUp=Kerberos n''est pas configuré. Connexion impossible.
+registerTitle=S''enregistrer
+loginAccountTitle=Connectez-vous à votre compte
+registerWithTitle=Enregistrement avec {0}
+registerWithTitleHtml={0}
+loginTitle=Se connecter à {0}
+loginTitleHtml={0}
+impersonateTitle={0} utilisateur usurpé
+impersonateTitleHtml=<strong>{0}</strong> utilisateur usurpé
+realmChoice=Domaine
+unknownUser=Utilisateur inconnu
+loginTotpTitle=Configuration de l''authentification par mobile
+loginProfileTitle=Mise à jour du compte
+loginIdpReviewProfileTitle=Vérifiez vos informations de profil
+loginTimeout=Le temps imparti pour la connexion est écoulé. Le processus de connexion redémarre depuis le début.
+oauthGrantTitle=Accorder l''accès à {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Assurez-vous de faire confiance à {0} en apprenant comment {0} traitera vos données.
+oauthGrantReview=Vous pourriez examiner
+oauthGrantTos=les conditions générales d''utilisation.
+oauthGrantPolicy=la politique de confidentialité.
+errorTitle=Nous sommes désolés...
+errorTitleHtml=Nous sommes <strong>désolés</strong>...
+emailVerifyTitle=Vérification du courriel
+emailForgotTitle=Mot de passe oublié ?
+updateEmailTitle=Mise à jour du courriel
+emailUpdateConfirmationSentTitle=Courriel de confirmation envoyé
+emailUpdateConfirmationSent=Un courriel de confirmation a été envoyé à {0}. Vous devez suivre les instructions de ce dernier afin de compléter la mise à jour.
+emailUpdatedTitle=Adresse courriel mis à jour
+emailUpdated=La mise à jour de votre adresse courriel vers {0} a été complétée avec succès.
+updatePasswordTitle=Mise à jour du mot de passe
+codeSuccessTitle=Code succès
+codeErrorTitle=Code d''erreur \: {0}
+displayUnsupported=Type d''affichage demandé non supporté
+browserRequired=Navigateur requis pour se connecter
+browserContinue=Navigateur requis pour continuer la connexion
+browserContinuePrompt=Ouvrir le navigateur et continuer la connexion? [y/n]:
+browserContinueAnswer=y
+
+termsTitle=Termes et Conditions
+termsTitleHtml=Termes et Conditions
+termsText=<p>Termes et conditions à définir</p>
+termsPlainText=Termes et conditions à définir
+termsAcceptanceRequired=Vous devez accepter les termes et conditions.
+acceptTerms=J''accepte les termes et conditions
+
+recaptchaFailed=Re-captcha invalide
+recaptchaNotConfigured=Re-captcha est requis, mais il n''est pas configuré
+consentDenied=Consentement refusé.
+
+noAccount=Nouvel utilisateur ?
+username=Nom d''utilisateur
+usernameOrEmail=Nom d''utilisateur ou courriel
+firstName=Prénom
+givenName=Prénom
+fullName=Nom complet
+lastName=Nom
+familyName=Nom de famille
+email=Courriel
+password=Mot de passe
+passwordConfirm=Confirmation du mot de passe
+passwordNew=Nouveau mot de passe
+passwordNewConfirm=Confirmation du nouveau mot de passe
+rememberMe=Se souvenir de moi
+authenticatorCode=Code à usage unique
+address=Adresse
+street=Rue
+locality=Ville ou Localité
+region=État, Province ou Région
+postal_code=Code postal
+country=Pays
+emailVerified=Courriel vérifié
+website=Page web
+phoneNumber=Numéro de téléphone
+phoneNumberVerified=Numéro de téléphone vérifié
+gender=Sexe
+birthday=Date de naissance
+zoneinfo=Fuseau horaire
+gssDelegationCredential=Accréditation de délégation GSS
+logoutOtherSessions=Se déconnecter des autres appareils
+
+profileScopeConsentText=Profil utilisateur
+emailScopeConsentText=Courriel
+addressScopeConsentText=Adresse
+phoneScopeConsentText=Numéro de téléphone
+offlineAccessScopeConsentText=Accès hors-ligne
+samlRoleListScopeConsentText=Mes rôles
+rolesScopeConsentText=Rôles utilisateur
+
+restartLoginTooltip=Redémarrer la connexion
+
+loginTotpIntro=Il est nécessaire de configurer un générateur One Time Password pour accéder à ce compte
+loginTotpStep1=Installez une des applications suivantes sur votre mobile:
+loginTotpStep2=Ouvrez l''application et scannez le code-barres ou entrez la clef.
+loginTotpStep3=Entrez le code à usage unique fourni par l''application et cliquez sur Sauvegarder pour terminer.
+loginTotpStep3DeviceName=Renseignez un nom d''appareil pour vous aider à gérer vos a appareils OTP.
+loginTotpManualStep2=Ouvrez l''application et saisissez la clé
+loginTotpManualStep3=Utilisez la configuration de valeur suivante si l''application permet son édition
+loginTotpUnableToScan=Impossible de scanner?
+loginTotpScanBarcode=Scanner le code barre ?
+loginCredential=Accréditation
+loginOtpOneTime=Code à usage unique
+loginTotpType=Type
+loginTotpAlgorithm=Algorithme
+loginTotpDigits=Chiffres
+loginTotpInterval=Intervalle
+loginTotpCounter=Compteur
+loginTotpDeviceName=Nom d''appareil
+
+loginTotp.totp=Basé sur le temps
+loginTotp.hotp=Basé sur les compteurs
+
+loginChooseAuthenticator=Sélectionnez une méthode de connexion
+
+oauthGrantRequest=Voulez-vous accorder ces privilèges d''accès ?
+inResource=dans
+
+oauth2DeviceVerificationTitle=Connexion de l''appareil
+verifyOAuth2DeviceUserCode=Entrez le code à usage unique fourni par votre appareil et cliquez sur Soumettre.
+oauth2DeviceInvalidUserCodeMessage=Code invalide, veuillez réessayer.
+oauth2DeviceExpiredUserCodeMessage=Le code a expiré. Veuillez réessayer de vous connecter depuis votre appareil.
+oauth2DeviceVerificationCompleteHeader=Connexion de l''appareil réussie
+oauth2DeviceVerificationCompleteMessage=Vous pouvez fermer cette fenêtre de navigateur et retourner sur votre appareil.
+oauth2DeviceVerificationFailedHeader=Échec de la connexion au dispositif
+oauth2DeviceVerificationFailedMessage=Vous pouvez fermer cette fenêtre de navigateur et retourner sur votre appareil, puis réessayer de vous connecter.
+oauth2DeviceConsentDeniedMessage=Consentement refusé pour connecter l''appareil.
+oauth2DeviceAuthorizationGrantDisabledMessage=Le client n''est pas autorisé à initier OAuth 2.0 Device Authorization Grant. Le flux est désactivé pour ce client.
+
+emailVerifyInstruction1=Un courriel avec des instructions à suivre a été envoyé à votre adresse {0}.
+emailVerifyInstruction2=Vous n''avez pas reçu de code dans le courriel ?
+emailVerifyInstruction3=pour renvoyer le courriel.
+
+emailLinkIdpTitle=Association avec {0}
+emailLinkIdp1=Un courriel avec des instructions pour associer le compte {1} sur {0} avec votre compte {2} vous a été envoyé.
+emailLinkIdp2=Vous n''avez pas reçu de code dans le courriel ?
+emailLinkIdp3=pour renvoyer le courriel.
+emailLinkIdp4=Si vous avez déjà vérifié votre courriel dans un autre navigateur
+emailLinkIdp5=pour continuer.
+
+backToLogin=&laquo; Retour à la connexion
+
+emailInstruction=Entrez votre nom d''utilisateur ou votre courriel ; un courriel va vous être envoyé vous permettant de créer un nouveau mot de passe.
+emailInstructionUsername=Entrez votre nom d''utilisateur ; un courriel va vous être envoyé vous permettant de créer un nouveau mot de passe.
+
+copyCodeInstruction=Copiez le code et recopiez le dans votre application :
+
+pageExpiredTitle=La page a expiré
+pageExpiredMsg1=Pour recommencer le processus d''authentification
+pageExpiredMsg2=Pour continuer le processus d''authentification
+
+personalInfo=Information personnelle :
+role_admin=Administrateur
+role_realm-admin=Administrateur du domaine
+role_create-realm=Créer un domaine
+role_create-client=Créer un client
+role_view-realm=Voir un domaine
+role_view-users=Voir les utilisateurs
+role_view-applications=Voir les applications
+role_view-clients=Voir les clients
+role_view-events=Voir les événements
+role_view-identity-providers=Voir les fournisseurs d''identité
+role_manage-realm=Gérer le domaine
+role_manage-users=Gérer les utilisateurs
+role_manage-applications=Gérer les applications
+role_manage-identity-providers=Gérer les fournisseurs d''identité
+role_manage-clients=Gérer les clients
+role_manage-events=Gérer les événements
+role_view-profile=Voir le profil
+role_manage-account=Gérer le compte
+role_manage-account-links=Gérer les liens de compte
+role_read-token=Lire le jeton d''authentification
+role_offline-access=Accès hors-ligne
+client_account=Compte
+client_account-console=Console de gestion du compte
+client_security-admin-console=Console d''administration de la sécurité
+client_admin-cli=Admin CLI
+client_realm-management=Gestion du domaine
+client_broker=Broker
+
+requiredFields=Champs requis
+
+invalidUserMessage=Nom d''utilisateur ou mot de passe invalide.
+invalidUsernameMessage=Nom d''utilisateur invalide.
+invalidUsernameOrEmailMessage=Nom d''utilisateur ou courriel invalide.
+invalidPasswordMessage=Mot de passe invalide.
+invalidEmailMessage=Courriel invalide.
+accountDisabledMessage=Compte désactivé, contactez votre administrateur.
+accountTemporarilyDisabledMessage=Ce compte est temporairement désactivé, contactez votre administrateur ou bien réessayez plus tard.
+expiredCodeMessage=Connexion expirée. Veuillez vous reconnecter.
+expiredActionMessage=Action expirée. Merci de continuer la connexion.
+expiredActionTokenNoSessionMessage=Action expirée.
+expiredActionTokenSessionExistsMessage=Action expirée. Merci de recommencer.
+
+missingFirstNameMessage=Veuillez entrer votre prénom.
+missingLastNameMessage=Veuillez entrer votre nom.
+missingEmailMessage=Veuillez entrer votre courriel.
+missingUsernameMessage=Veuillez entrer votre nom d''utilisateur.
+missingPasswordMessage=Veuillez entrer votre mot de passe.
+missingTotpMessage=Veuillez entrer votre code d''authentification.
+missingTotpDeviceNameMessage=Veuillez entrer le nom de votre appareil.
+notMatchPasswordMessage=Les mots de passe ne sont pas identiques.
+
+error-invalid-value=Valeur invalide.
+error-invalid-blank=Veuillez entrer une valeur.
+error-empty=Veuillez entrer une valeur.
+error-invalid-length=La longueur doit être entre {1} et {2}.
+error-invalid-length-too-short=La longueur minimale est {1}.
+error-invalid-length-too-long=La longueur maximale est {2}.
+error-invalid-email=Courriel invalide.
+error-invalid-number=Nombre invalide.
+error-number-out-of-range=Le nombre doit être entre {1} et {2}.
+error-number-out-of-range-too-small=Le nombre doit avoir une valeur minimale de {1}.
+error-number-out-of-range-too-big=Le nombre doit avoir une valeur maximale de {2}.
+error-pattern-no-match=Valeur invalide.
+error-invalid-uri=URL invalide.
+error-invalid-uri-scheme=Schéma d''URL invalide.
+error-invalid-uri-fragment=Fragment d''URL invalide.
+error-user-attribute-required=Veuillez renseigner ce champ.
+error-invalid-date=Date invalide.
+error-user-attribute-read-only=Ce champ est en lecture seule.
+error-username-invalid-character=La valeur contient des caractères invalides.
+error-person-name-invalid-character=La valeur contient des caractères invalides.
+
+invalidPasswordExistingMessage=Mot de passe existant invalide.
+invalidPasswordBlacklistedMessage=Mot de passe invalide : ce mot de passe est blacklisté.
+invalidPasswordConfirmMessage=Le mot de passe de confirmation ne correspond pas.
+invalidTotpMessage=Le code d''authentification est invalide.
+
+usernameExistsMessage=Le nom d''utilisateur existe déjà.
+emailExistsMessage=Le courriel existe déjà.
+
+federatedIdentityExistsMessage=L''utilisateur avec {0} {1} existe déjà. Veuillez accéder à au gestionnaire de compte pour lier le compte.
+federatedIdentityEmailExistsMessage=Cet utilisateur avec ce courriel existe déjà. Veuillez vous connecter au gestionnaire de compte pour lier le compte.
+
+confirmLinkIdpTitle=Ce compte existe déjà
+federatedIdentityConfirmLinkMessage=L''utilisateur {0} {1} existe déjà. Que souhaitez-vous faire ?
+federatedIdentityConfirmReauthenticateMessage=Identifiez vous afin de lier votre compte avec {0}
+nestedFirstBrokerFlowMessage=L''utilisateur {0} {1} n''est lié à aucun utilisateur connu.
+confirmLinkIdpReviewProfile=Vérifiez vos informations de profil
+confirmLinkIdpContinue=Souhaitez-vous lier {0} à votre compte existant
+
+configureTotpMessage=Vous devez configurer l''authentification par mobile pour activer votre compte.
+updateProfileMessage=Vous devez mettre à jour votre profil pour activer votre compte.
+updatePasswordMessage=Vous devez changer votre mot de passe pour activer votre compte.
+updateEmailMessage=Vous devez mettre à votre addresse de courriel pour activer votre compte.
+resetPasswordMessage=Vous devez changer votre mot de passe.
+verifyEmailMessage=Vous devez vérifier votre courriel pour activer votre compte.
+linkIdpMessage=Vous devez vérifier votre courriel pour lier votre compte avec {0}.
+
+emailSentMessage=Vous devriez recevoir rapidement un courriel avec de plus amples instructions.
+emailSendErrorMessage=Erreur lors de l''envoi du courriel, veuillez essayer plus tard.
+
+accountUpdatedMessage=Votre compte a été mis à jour.
+accountPasswordUpdatedMessage=Votre mot de passe a été mis à jour.
+
+delegationCompleteHeader=Connexion réussie
+delegationCompleteMessage=Vous pouvez fermer cette fenêtre de navigateur et retourner sur votre application console.
+delegationFailedHeader=Connexion échouée
+delegationFailedMessage=Vous pouvez fermer cette fenêtre de navigateur et retourner sur votre application console, puis réessayer de vous connecter.
+
+noAccessMessage=Aucun accès
+
+invalidPasswordMinLengthMessage=Mot de passe invalide : longueur minimale requise de {0}.
+invalidPasswordMaxLengthMessage=Mot de passe invalide : longueur maximale de {0}.
+invalidPasswordMinDigitsMessage=Mot de passe invalide : doit contenir au moins {0} chiffre(s).
+invalidPasswordMinLowerCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en minuscule.
+invalidPasswordMinUpperCaseCharsMessage=Mot de passe invalide : doit contenir au moins {0} lettre(s) en majuscule.
+invalidPasswordMinSpecialCharsMessage=Mot de passe invalide : doit contenir au moins {0} caractère(s) spéciaux.
+invalidPasswordNotUsernameMessage=Mot de passe invalide : ne doit pas être identique au nom d''utilisateur.
+invalidPasswordNotEmailMessage=Mot de passe invalide: ne doit pas être identique au courriel.
+invalidPasswordRegexPatternMessage=Mot de passe invalide : ne valide pas l''expression rationnelle.
+invalidPasswordHistoryMessage=Mot de passe invalide : ne doit pas être égal aux {0} derniers mots de passe.
+invalidPasswordGenericMessage=Mot de passe invalide : le nouveau mot de passe ne répond pas à la politique de mot de passe.
+
+failedToProcessResponseMessage=Erreur lors du traitement de la réponse
+httpsRequiredMessage=Le protocole HTTPS est requis
+realmNotEnabledMessage=Le domaine n''est pas activé
+invalidRequestMessage=Requête invalide
+successLogout=Vous êtes déconnecté
+failedLogout=La déconnexion a échouée
+unknownLoginRequesterMessage=Compte inconnu du demandeur
+loginRequesterNotEnabledMessage=La connexion du demandeur n''est pas active
+bearerOnlyMessage=Les applications Bearer-only ne sont pas autorisées à initier la connexion par navigateur.
+standardFlowDisabledMessage=Le client n''est pas autorisé à initier une connexion avec le navigateur avec ce response_type. Le flux standard est désactivé pour le client.
+implicitFlowDisabledMessage=Le client n''est pas autorisé à initier une connexion avec le navigateur avec ce response_type. Le flux implicite est désactivé pour le client.
+invalidRedirectUriMessage=L''URI de redirection est invalide
+unsupportedNameIdFormatMessage=NameIDFormat non supporté
+invalidRequesterMessage=Demandeur invalide
+registrationNotAllowedMessage=L''enregistrement n''est pas autorisé
+resetCredentialNotAllowedMessage=La remise à zéro n''est pas autorisée
+
+permissionNotApprovedMessage=La permission n''est pas approuvée.
+noRelayStateInResponseMessage=Aucun état de relais dans la réponse du fournisseur d''identité.
+insufficientPermissionMessage=Permissions insuffisantes pour lier les identités.
+couldNotProceedWithAuthenticationRequestMessage=Impossible de continuer avec la requête d''authentification vers le fournisseur d''identité.
+couldNotObtainTokenMessage=Impossible de récupérer le jeton du fournisseur d''identité.
+unexpectedErrorRetrievingTokenMessage=Erreur inattendue lors de la récupération du jeton provenant du fournisseur d''identité.
+unexpectedErrorHandlingResponseMessage=Erreur inattendue lors du traitement de la réponse provenant du fournisseur d''identité.
+identityProviderAuthenticationFailedMessage=L''authentification a échouée. Impossible de s''authentifier avec le fournisseur d''identité.
+couldNotSendAuthenticationRequestMessage=Impossible d''envoyer la requête d''authentification vers le fournisseur d''identité.
+unexpectedErrorHandlingRequestMessage=Erreur inattendue lors du traitement de la requête vers le fournisseur d''identité.
+invalidAccessCodeMessage=Code d''accès invalide.
+sessionNotActiveMessage=La session n''est pas active.
+invalidCodeMessage=Une erreur est survenue, veuillez vous reconnecter à votre application.
+cookieNotFoundMessage=Cookie introuvable. Assurez-vous que les cookies soient activés dans votre navigateur.
+identityProviderUnexpectedErrorMessage=Erreur inattendue lors de l''authentification avec fournisseur d''identité.
+identityProviderMissingStateMessage=Paramètre d''état manquant dans la réponse du fournisseur d''identité.
+identityProviderNotFoundMessage=Impossible de trouver le fournisseur d''identité avec cet identifiant.
+identityProviderLinkSuccess=Votre compte a été correctement lié avec {0} compte {1} .
+staleCodeMessage=Cette page n''est plus valide, merci de retourner à votre application et de vous connecter à nouveau.
+realmSupportsNoCredentialsMessage=Ce domaine ne supporte aucun type d''accréditation.
+credentialSetupRequired=Connexion impossible, configuration d''accréditation requise.
+identityProviderNotUniqueMessage=Ce domaine autorise plusieurs fournisseurs d''identité. Impossible de déterminer le fournisseur d''identité avec lequel s''authentifier.
+emailVerifiedMessage=Votre courriel a été vérifié.
+
+staleEmailVerificationLink=Le lien que vous avez cliqué est périmé et n''est plus valide. Peut-être avez vous déjà vérifié votre mot de passe ?
+identityProviderAlreadyLinkedMessage=L''identité fédérée retournée par {0} est déjà liée à un autre utilisateur.
+confirmAccountLinking=Confirmez la liaison du compte {0} du fournisseur d''entité {1} avec votre compte.
+confirmEmailAddressVerification=Confirmez la validité de l''adresse courriel {0}.
+confirmExecutionOfActions=Suivez les instructions suivantes
+
+
+backToApplication=&laquo; Revenir à l''application
+missingParameterMessage=Paramètres manquants \: {0}
+clientNotFoundMessage=Client inconnu.
+clientDisabledMessage=Client désactivé.
+invalidParameterMessage=Paramètre invalide \: {0}
+alreadyLoggedIn=Vous êtes déjà connecté.
+
+differentUserAuthenticated=Vous êtes déjà authentifié avec un autre utilisateur ''{0}'' dans cette session. Merci de vous déconnecter.
+brokerLinkingSessionExpired=La liaison entre comptes broker a été demandée, mais la session n''est plus valide.
+proceedWithAction=» Cliquez ici
+
+
+requiredAction.CONFIGURE_TOTP=Configurer OTP
+requiredAction.TERMS_AND_CONDITIONS=Termes et conditions
+requiredAction.UPDATE_PASSWORD=Mettre à jour votre mot de passe
+requiredAction.UPDATE_PROFILE=Mettre à jour votre profil
+requiredAction.VERIFY_EMAIL=Valider votre adresse email
+
+
+doX509Login=Vous allez être connecté en tant que\:
+clientCertificate=X509 certificat client\:
+noCertificate=[Pas de certificat]
+
+
+pageNotFound=Page non trouvée
+internalServerError=Une erreur interne du serveur s''est produite
+
+# Identity provider
+identity-provider-redirector=Connexion avec un autre fournisseur d''identité
+identity-provider-login-label=Ou se connecter avec
+idp-email-verification-display-name=Vérification du courriel
+idp-email-verification-help-text=Lier votre compte en validant votre courriel.
+idp-username-password-form-display-name=Nom d''utilisateur et mot de passe
+idp-username-password-form-help-text=Lier votre compte en vous connectant.
+
+console-username=Nom d''utilisateur:
+console-password=Mot de passe:
+console-otp=Code à usage unique:
+console-new-password=Nouveau mot de passe:
+console-confirm-password=Confirmez les mot de passe:
+console-update-password=La mise à jour de votre mot de passe est requise.
+console-verify-email=Vous devez vérifier votre adresse courriel. Nous avons envoyé un courriel à {0} contenant un code de vérification. Veuillez saisir ce code ci-dessous.
+console-email-code=Code courriel:
+console-accept-terms=Accepter les conditions? [o/n]:
+console-accept=o
+
+#authenticators
+password-display-name=Mot de passe
+password-help-text=Connectez-vous en saisissant votre mot de passe.
+auth-username-form-display-name=Nom d''utilisateur
+auth-username-form-help-text=Commencez la connexion en saisissant votre nom d''utilisateur.
+auth-username-password-form-display-name=Nom d''utilisateur et mot de passe
+auth-username-password-form-help-text=Connectez-vous en saisissant votre nom d''utilisateur et votre mot de passe.
+
+# WebAuthn
+webauthn-display-name=Clé de Sécurité
+webauthn-help-text=Utilisez votre clé de sécurité pour vous connecter.
+webauthn-passwordless-display-name=Clé de Sécurité
+webauthn-passwordless-help-text=Utilisez votre clé de sécurité pour vous connecter sans mot de passe.
+webauthn-login-title=Connexion avec une Clé de Sécurité
+webauthn-registration-title=Enregistrement d''une Clé de Sécurité
+webauthn-available-authenticators=Clés de Sécurité disponibles
+webauthn-unsupported-browser-text=WebAuthn n''est pas supporté par ce navigateur. Essayez une autre méthode ou contactez votre administrateur.
+webauthn-doAuthenticate=Se connecter avec une Clé de Sécurité
+webauthn-createdAt-label=Créé le
+
+# WebAuthn Error
+webauthn-error-title=Erreur lors de l''utilisation de la Clé de Sécurité
+webauthn-error-registration=L''enregistrement de la Clé de Sécurité a échoué.<br/> {0}
+webauthn-error-api-get=L''authentification via la Clé de Sécurité a échoué.<br/> {0}
+webauthn-error-different-user=Le premier utilisateur authentifié ne correspond pas à celui qui est authentifié par la Clé de Sécurité.
+webauthn-error-auth-verification=Le résultat de l''authentification produite par la clé de sécurité est invalide.<br/> {0}
+webauthn-error-register-verification=Le résultat de l''enregistrement de la clé de sécurité est invalide.<br/> {0}
+webauthn-error-user-not-found=La Clé de Sécurité a authentifié un utilisateur inconnu.
+
+finalDeletionConfirmation=Si vous supprimez votre compte, il ne pourra pas être restauré. Pour conserver votre compte, cliquez sur Annuler.
+irreversibleAction=Cette action est irréversible
+deleteAccountConfirm=Confirmation de suppression de compte
+
+deletingImplies=Supprimer votre compte implique:
+errasingData=Supprimer toutes vos données
+loggingOutImmediately=Vous déconnecter immédiatement
+accountUnusable=Toute utilisation future de l''application sera impossible avec ce compte
+userDeletedSuccessfully=Utilisateur supprimé avec succès
+
+access-denied=Accès refusé
+
+frontchannel-logout.title=Déconnexion
+frontchannel-logout.message=Vous êtes déconnecté des applications suivantes
+logoutConfirmTitle=Déconnexion
+logoutConfirmHeader=Êtes-vous sûr de vouloir vous déconnecter ?
+doLogout=Se déconnecter
diff --git a/themes/custom-theme-template/login/messages/messages_hu.properties b/themes/custom-theme-template/login/messages/messages_hu.properties
new file mode 100644
index 0000000000000000000000000000000000000000..28d83ca7384080e57fdc0b84eb1b46700de20d6b
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_hu.properties
@@ -0,0 +1,517 @@
+doLogIn=Belépés
+doRegister=Regisztráció
+doRegisterSecurityKey=Regisztráció
+doCancel=Mégsem
+doSubmit=Elküld
+doBack=Vissza
+doYes=Igen
+doNo=Nem
+doContinue=Folytat
+doIgnore=Mellőz
+doAccept=Elfogad
+doDecline=Elutasít
+doForgotPassword=Elfelejtette a jelszavát?
+doClickHere=Kattintson ide
+doImpersonate=Megszemélyesítés
+doTryAgain=Próbálja újra
+doTryAnotherWay=Pórbálja máshogyan
+doConfirmDelete=Törlés megerősítése
+errorDeletingAccount=Hiba történt a fiók törlése közben
+deletingAccountForbidden=Nincs jogosultsága a felhasználói fiókjának törléséhez. Kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+kerberosNotConfigured=Nincs beállítva Kerberos
+kerberosNotConfiguredTitle=Nincs beállítva Kerberos
+bypassKerberosDetail=Vagy nem Kerberosszal lépett be, vagy a böngészője nem kezeli a Kerberos alapú belépést. Kérem, kattintson a Folytat gombra, egy másik belépési módhoz.
+kerberosNotSetUp=Nincs beállítva Kerberos, nem lehet belépni.
+registerTitle=Regisztráció
+loginAccountTitle=Jelentkezzen be a fiókjába
+loginTitle=Belépés ide: {0}
+loginTitleHtml={0}
+impersonateTitle={0} megszemélyesített felhasználó
+impersonateTitleHtml=<strong>{0}</strong> megszemélyesített felhasználó
+realmChoice=Tartomány
+unknownUser=Ismeretlen felhasználó
+loginTotpTitle=Mobil hitelesítő eszköz beállítása
+loginProfileTitle=Felhasználói fiók adatok módosítása
+loginIdpReviewProfileTitle=Fiók adatainak módosítása
+loginTimeout=Belépési kísérlete időtúllépés miatt meghiúsult, a belépési eljárás újraindul.
+reauthenticate=Kérem, jelentkezzen be újra a folytatáshoz
+oauthGrantTitle=Hozzáférés engedélyezése a következő számára: {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Győződjön meg arról, hogy megbízik a(z) {0} alkalmazásban azáltal, hogy megismeri, hogyan kezeli az adatait.
+oauthGrantReview=Tekintse át 
+oauthGrantTos=a Felhasználási feltételeket.
+oauthGrantPolicy=az Adatvédelmi irányelveket.
+errorTitle=Nagyon sajnáljuk...
+errorTitleHtml=Nagyon <strong>sajnáljuk</strong> ...
+emailVerifyTitle=E-mail ellenőrzés
+emailForgotTitle=Elfelejtette a jelszavát?
+updateEmailTitle=E-mail cím módosítása
+emailUpdateConfirmationSentTitle=Megerősítő e-mail elküldve
+emailUpdateConfirmationSent=Egy megerősítő e-mail került elküldésre a(z) {0} címre. Kövesse az abban található utasításokat a változtatások véglegesítéséhez.
+emailUpdatedTitle=E-mail cím módosítva
+emailUpdated=A fiók e-mail címe a következőre módosult: {0}.
+updatePasswordTitle=Jelszó módosítása
+codeSuccessTitle=Sikeres kérés kódja
+codeErrorTitle=Hibakód\: {0}
+displayUnsupported=A kért megjelenítési mód nem támogatott
+browserRequired=A belépéshez böngésző szükséges
+browserContinue=A belépés befejezéséhez böngésző szükséges
+browserContinuePrompt=Megnyitja a böngészőt és folytatja a belépést? [i/n]:
+browserContinueAnswer=i
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Belső
+unknown=Ismeretlen
+
+termsTitle=Felhasználási feltételek
+termsText=<p>Felhasználási feltételek helye</p>
+termsPlainText=Felhasználási feltételek helye
+termsAcceptanceRequired=El kell fogadnia a felhasználási feltételeket.
+acceptTerms=Elfogadom a felhasználási feltételeket
+
+recaptchaFailed=Érvénytelen Recaptcha
+recaptchaNotConfigured=Recaptcha szükséges, de nincsen beállítva
+consentDenied=Jóváhagyó nyilatkozat elutasítva.
+
+noAccount=Új felhasználó?
+username=Felhasználónév
+usernameOrEmail=Felhasználónév vagy email
+firstName=Keresztnév
+givenName=Keresztnév
+fullName=Teljes név
+lastName=Vezetéknév
+familyName=Vezetéknév
+email=E-mail cím
+password=Jelszó
+passwordConfirm=Jelszó megerősítése
+passwordNew=Új jelszó
+passwordNewConfirm=Új jelszó megerősítése
+rememberMe=Automatikus bejelentkezés
+authenticatorCode=Egyszer használatos hitelesítő kód
+address=Cím
+street=Közterület
+locality=Település
+region=Állam, Tartomány, Megye, Régió
+postal_code=Irányítószám
+country=Ország
+emailVerified=Ellenőrzött e-mail cím
+website=Weboldal
+phoneNumber=Telefonszám
+phoneNumberVerified=Ellenőrzött telefonszám
+gender=Nem
+birthday=Születési dátum
+zoneinfo=Időzóna
+gssDelegationCredential=GSS delegált hitelesítés
+logoutOtherSessions=Kijelentkezés más eszközökről
+
+profileScopeConsentText=Felhasználói fiók
+emailScopeConsentText=E-mail cím
+addressScopeConsentText=Cím
+phoneScopeConsentText=Telefonszám
+offlineAccessScopeConsentText=Offline hozzáférés
+samlRoleListScopeConsentText=Szerepköreim
+rolesScopeConsentText=Felhasználói szerepkörök
+
+restartLoginTooltip=Belépés újrakezdése
+
+loginTotpIntro=A felhasználói fiók hozzáféréshez be kell állítania egy egyszer használatos jelszót (OTP) generáló alkalmazást.
+loginTotpStep1=Kérem, telepítse az itt felsorolt alkalmazások egyikét a mobil eszközére:
+loginTotpStep2=Indítsa el az alkalmazást a mobil eszközén és olvassa be ezt a (QR) kódot:
+loginTotpStep3=Adja meg az alkalmazás által generált egyszer használatos kódot majd kattintson az Elküld gombra a beállítás befejezéséhez.
+loginTotpStep3DeviceName=Adja meg a mobil eszköz nevét. Ez a későbbiekben segíthet az eszköz azonosításában.
+loginTotpManualStep2=Indítsa el az alkalmazást és adja meg a következő kulcsot:
+loginTotpManualStep3=Használja a következő beállításokat, ha az alkalmazása támogatja ezeket:
+loginTotpUnableToScan=Nem tud (QR) kódot beolvasni?
+loginTotpScanBarcode=Inkább (QR) kódot olvasna be?
+loginCredential=Jelszó
+loginOtpOneTime=Egyszer használatos kód
+loginTotpType=Típus
+loginTotpAlgorithm=Algoritmus
+loginTotpDigits=Számjegyek
+loginTotpInterval=Intervallum
+loginTotpCounter=Számláló
+loginTotpDeviceName=Eszköz neve
+
+loginTotp.totp=Idő alapú
+loginTotp.hotp=Számláló alapú
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=Válasszon egy belépési módszert
+
+oauthGrantRequest=Engedélyezi a következő hozzáférés jogosultságokat?
+inResource=Itt:
+
+oauth2DeviceVerificationTitle=Eszköz hitelesítése
+verifyOAuth2DeviceUserCode=Írja be az eszköz által generált kódot, majd kattintson az Elküld gombra
+oauth2DeviceInvalidUserCodeMessage=Érvénytelen kód, kérem, próbálja újra.
+oauth2DeviceExpiredUserCodeMessage=A kód érvényessége lejárt. Kérem, térjen vissza az eszközhöz és próbálja újra.
+oauth2DeviceVerificationCompleteHeader=Eszköz hitelesítése sikeres
+oauth2DeviceVerificationCompleteMessage=Bezárhatja ezt az oldalt és visszatérhet az eszközhöz.
+oauth2DeviceVerificationFailedHeader=Eszköz hitelesítése sikertelen
+oauth2DeviceVerificationFailedMessage=Bezárhatja ezt az oldalt. Kérem, térjen vissza az eszközhöz és próbáljon meg csatlakozni újra.
+oauth2DeviceConsentDeniedMessage=Jóváhagyó nyilatkozat elutasítva az eszköz számára.
+oauth2DeviceAuthorizationGrantDisabledMessage=Az alkalmazás nem indíthat OAuth 2.0 Eszköz Hitelesítést. Ez a folyamat nincsen engedélyezve ezen alkalmazás számára.
+
+emailVerifyInstruction1=A megadott e-mail címre elküldtük az e-mail cím megerősítéséhez szükséges lépéseket tartalmazó üzenetet.
+emailVerifyInstruction2=Nem kapott megerősítő kódot tartalmazó e-mail üzenetet?
+emailVerifyInstruction3=az ellenőrző kód ismételt kiküldéséhez.
+
+emailLinkIdpTitle={0} összekötés
+emailLinkIdp1=A(z) {1} {0} fiók és a(z) {2} fiókjának összekötéséhez szükséges tudnivalókat e-mail üzenetben elküldtük Önnek.
+emailLinkIdp2=Nem kapott megerősítő kódot tartalmazó e-mail üzenetet?
+emailLinkIdp3=az ellenőrző kód ismételt kiküldéséhez.
+emailLinkIdp4=Ha egy másik böngészőben már jóváhagyta az e-mail címét
+emailLinkIdp5=a folytatáshoz.
+
+backToLogin=&laquo; Vissza a belépéshez
+
+emailInstruction=Adja meg a felhasználónevét vagy e-mail címét, hogy az új jelszó beállításához szükséges tudnivalókat elküldhessük Önnek.
+emailInstructionUsername=Adja meg a felhasználónevét, hogy az új jelszó beállításához szükséges tudnivalókat elküldhessük Önnek.
+
+copyCodeInstruction=Kérem, másolja ki ezt a kódot és illessze be az alkalmazásába:
+
+pageExpiredTitle=A lap érvényessége lejárt
+pageExpiredMsg1=Ahhoz, hogy újrakezdje a belépési eljárást
+pageExpiredMsg2=Ahhoz, hogy folytassa a belépési eljárást
+
+personalInfo=Személyes adatok:
+role_admin=Adminisztrátor
+role_realm-admin=Tartomány Adminisztrátor
+role_create-realm=Tartomány létrehozása
+role_create-client=Kliens létrehozása
+role_view-realm=Tartományok megtekintése
+role_view-users=Felhasználók megtekintése
+role_view-applications=Alkalmazások megtekintése
+role_view-clients=Kliensek megtekintése
+role_view-events=Események megtekintése
+role_view-identity-providers=Személyazonosság-kezelők megtekintése
+role_manage-realm=Tartományok kezelése
+role_manage-users=Felhasználók kezelése
+role_manage-applications=Alkalmazások kezelése
+role_manage-identity-providers=Személyazonosság-kezelők karbantartása
+role_manage-clients=Kliensek kezelése
+role_manage-events=Események kezelése
+role_view-profile=Fiók megtekintése
+role_manage-account=Fiók kezelése
+role_manage-account-links=Fiók összekötések kezelése
+role_read-token=Olvasási token
+role_offline-access=Offline hozzáférés
+client_account=Fiók
+client_account-console=Fiók kezelés
+client_security-admin-console=Biztonsági, adminisztrátor fiók kezelés
+client_admin-cli=Admin CLI
+client_realm-management=Tartomány kezelés
+client_broker=Ügynök
+
+requiredFields=Kötelezően kitöltendő mezők
+
+invalidUserMessage=Érvénytelen felhasználónév vagy jelszó.
+invalidUsernameMessage=Érvénytelen felhasználónév.
+invalidUsernameOrEmailMessage=Érvénytelen felhasználónév vagy e-mail cím.
+invalidPasswordMessage=Érvénytelen jelszó.
+invalidEmailMessage=Érvénytelen e-mail cím.
+accountDisabledMessage=Felhasználói fiókja inaktív, kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+accountTemporarilyDisabledMessage=Felhasználói fiókja átmenetileg inaktív, kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával, vagy próbálkozzon később.
+expiredCodeMessage=Belépési időtúllépés, kérem, lépjen be újra.
+expiredActionMessage=A művelet érvényességi ideje lejárt. Kérem, lépjen be újra.
+expiredActionTokenNoSessionMessage=A művelet érvényességi ideje lejárt.
+expiredActionTokenSessionExistsMessage=A művelet érvényességi ideje lejárt. Kérem, ismételje meg a műveletet.
+sessionLimitExceeded=Túl sok az aktív munkamenet
+
+missingFirstNameMessage=Kérem, adja meg a keresztnevet.
+missingLastNameMessage=Kérem, adja meg a vezetéknevet.
+missingEmailMessage=Kérem, adja meg az e-mail címet.
+missingUsernameMessage=Kérem, adja meg a felhasználónevét.
+missingPasswordMessage=Kérem, adja meg a jelszót.
+missingTotpMessage=Kérem, adja meg a hitelesítő kódot.
+missingTotpDeviceNameMessage=Kérem, adja meg az eszköz nevét.
+notMatchPasswordMessage=A jelszavak nem egyeznek meg.
+
+error-invalid-value=Érvénytelen érték
+error-invalid-blank=Kérem, adja meg a mező értékét.
+error-empty=Kérem, adja meg a mező értékét.
+error-invalid-length=A hossznak {1} és {2} karakter között kell lennie.
+error-invalid-length-too-short=A minimális hossz {1} karakter.
+error-invalid-length-too-long=A maximális hossz {2} karakter.
+error-invalid-email=Érvénytelen e-mail cím.
+error-invalid-number=Érvénytelen szám.
+error-number-out-of-range=A szám {1} és {2} közötti értéket vehet fel.
+error-number-out-of-range-too-small=A szám minimális értéke: {1}.
+error-number-out-of-range-too-big=A szám maximális értéke: {2}.
+error-pattern-no-match=Érvénytelen érték.
+error-invalid-uri=Érvénytelen URL.
+error-invalid-uri-scheme=Érvénytelen URL séma.
+error-invalid-uri-fragment=Érvénytelen URL fragmens.
+error-user-attribute-required=Kérem, töltse ki ezt a mezőt.
+error-invalid-date=Érvénytelen dátum.
+error-user-attribute-read-only=Ez a mező csak olvasható.
+error-username-invalid-character=A felhasználónév érvénytelen karaktert tartalmaz.
+error-person-name-invalid-character=A név érvénytelen karaktert tartalmaz.
+error-reset-otp-missing-id=Kérem, válasszon egyszer használatos hitelesítési (OTP) eljárást.
+
+invalidPasswordExistingMessage=Érvénytelen jelenlegi jelszó.
+invalidPasswordBlacklistedMessage=Érvénytelen jelszó: a jelszó tiltó listán szerepel.
+invalidPasswordConfirmMessage=A jelszavak nem egyeznek meg.
+invalidTotpMessage=Érvénytelen hitelesítő kód.
+
+usernameExistsMessage=Ez a felhasználónév már foglalt.
+emailExistsMessage=Ez az e-mail cím már foglalt.
+
+federatedIdentityExistsMessage=A megadott {0} {1} felhasználó már létezik. Kérem, lépjen be a Keycloak Fiók Kezelőbe, hogy összeköthesse a fiókokat.
+federatedIdentityUnavailableMessage=A(z) {1} személyazonosság-kezelő által hitelesített felhasználó, {0} nem létezik. Kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+federatedIdentityUnmatchedEssentialClaimMessage=A személyazonosság-kezelő által kiállított ID token nem egyezik az alapvető beállítással. Kérem, vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+
+confirmLinkIdpTitle=A felhasználói fiók már létezik
+federatedIdentityConfirmLinkMessage=A megadott {0} {1} felhasználó már létezik. Hogyan tovább?
+federatedIdentityConfirmReauthenticateMessage=Azonosítsa magát, hogy összeköthesse a felhasználói fiókját a következővel: {0}
+nestedFirstBrokerFlowMessage=A(z) {0} {1} felhasználó nincs összekötve egyetlen ismert felhasználóval sem.
+confirmLinkIdpReviewProfile=Fiók áttekintése
+confirmLinkIdpContinue=Hozzáadás meglévő fiókhoz
+
+configureTotpMessage=Fiókja aktiválásához előbb be kell állítania egy mobil hitelesítő eszközt.
+configureBackupCodesMessage=Fiókja aktiválásához előbb létre kell hoznia Biztonsági Kódokat.
+updateProfileMessage=Fiókja aktiválásához előbb módosítania kell a felhasználói adatait.
+updatePasswordMessage=Fiókja aktiválásához előbb le kell cserélnie a jelszavát.
+updateEmailMessage=Fiókja aktiválásához előbb módosítania kell e-mail címét.
+resetPasswordMessage=Cserélje le jelszavát!
+verifyEmailMessage=Fiókja aktiválásához előbb erősítse meg e-mail címét.
+linkIdpMessage=Fiókja összekötéséhez előbb erősítse meg e-mail címét a következővel: {0}.
+
+emailSentMessage=Hamarosan e-mail üzenetet küldünk a további tudnivalókról.
+emailSendErrorMessage=Az e-mail üzenetet nem tudtuk elküldeni. Kérem, próbálja meg később.
+
+accountUpdatedMessage=A felhasználói fiók adatai megváltoztak.
+accountPasswordUpdatedMessage=A jelszava megváltozott.
+
+delegationCompleteHeader=Sikeres belépés
+delegationCompleteMessage=Becsukhatja a böngésző ablakot és visszatérhet a konzolos alkalmazásához.
+delegationFailedHeader=Sikertelen belépés
+delegationFailedMessage=Becsukhatja a böngésző ablakot és visszatérhet a konzolos alkalmazásához, ahol újból megpróbálhat a belépni.
+
+noAccessMessage=Nincs hozzáférés
+
+invalidPasswordMinLengthMessage=Érvénytelen jelszó: minimum hossz: {0}.
+invalidPasswordMaxLengthMessage=Érvénytelen jelszó: maximum hossz: {0}.
+invalidPasswordMinDigitsMessage=Érvénytelen jelszó: legalább {0} darab számjegyet kell tartalmaznia.
+invalidPasswordMinLowerCaseCharsMessage=Érvénytelen jelszó: legalább {0} darab kisbetűt kell tartalmaznia.
+invalidPasswordMinUpperCaseCharsMessage=Érvénytelen jelszó: legalább {0} darab nagybetűt kell tartalmaznia.
+invalidPasswordMinSpecialCharsMessage=Érvénytelen jelszó: legalább {0} darab speciális karaktert (pl. #!$@ stb.) kell tartalmaznia.
+invalidPasswordNotUsernameMessage=Érvénytelen jelszó: nem lehet azonos a felhasználónévvel.
+invalidPasswordNotEmailMessage=Érvénytelen jelszó: nem lehet azonos az e-mail címmel.
+invalidPasswordRegexPatternMessage=Érvénytelen jelszó: a jelszó nem illeszkedik a megadott reguláris kifejezés mintára.
+invalidPasswordHistoryMessage=Érvénytelen jelszó: nem lehet azonos az utolsó {0} darab, korábban alkalmazott jelszóval.
+invalidPasswordGenericMessage=Érvénytelen jelszó: az új jelszó nem felel meg a jelszó házirendnek.
+
+failedToProcessResponseMessage=A válasz üzenet feldolgozása nem sikerült.
+httpsRequiredMessage=HTTPS protokoll használata kötelező.
+realmNotEnabledMessage=A tartomány inaktív.
+invalidRequestMessage=Érvénytelen kérés.
+successLogout=Sikeres kilépés.
+failedLogout=A kilépés sikertelen.
+unknownLoginRequesterMessage=A belépést kérelmező ismeretlen.
+loginRequesterNotEnabledMessage=A belépést kérelmező inaktív.
+bearerOnlyMessage=Bearer-only alkalmazások nem kezdeményezhetnek böngésző alapú beléptetést.
+standardFlowDisabledMessage=Ez a kliens nem kezdeményezhet böngésző alapú beléptetést a megadott válasz típussal. A standard belépési eljárás (flow) tiltott a kliensen.
+implicitFlowDisabledMessage=Ez a kliens nem kezdeményezhet böngésző alapú beléptetést a megadott válasz típussal. Az implicit belépési eljárás (flow) tiltott a kliensen.
+invalidRedirectUriMessage=Érvénytelen átirányítási cím (URI)
+unsupportedNameIdFormatMessage=Nem támogatott NameIDFormat
+invalidRequesterMessage=Érvénytelen kérelmező
+registrationNotAllowedMessage=A felhasználó regisztráció tiltott.
+resetCredentialNotAllowedMessage=A jelszó visszaállítás tiltott.
+
+permissionNotApprovedMessage=A jogosultság nincsen jóváhagyva.
+noRelayStateInResponseMessage=Nincsen "relay state" a személyazonosság-kezelő válaszüzenetében.
+insufficientPermissionMessage=Nincs elég jogosultság a fiókok összekötéséhez.
+couldNotProceedWithAuthenticationRequestMessage=A személyazonosság-kezelő felé indított hitelesítési kérés sikertelen.
+couldNotObtainTokenMessage=Nem sikerült tokent igényelni a személyazonosság-kezelőtől.
+unexpectedErrorRetrievingTokenMessage=Váratlan hiba történt a személyazonosság-kezelő token igénylése közben.
+unexpectedErrorHandlingResponseMessage=Váratlan hiba történt a személyazonosság-kezelő válaszüzenetének feldolgozása közben.
+identityProviderAuthenticationFailedMessage=Nem sikerült a személyazonosság-kezelőn keresztül intézett hitelesítés.
+couldNotSendAuthenticationRequestMessage=Nem sikerült a személyazonosság-kezelőhöz intézett hitelesítés kérés elküldése.
+unexpectedErrorHandlingRequestMessage=Váratlan hiba történt a személyazonosság-kezelő hitelesítés kérés feldolgozása közben.
+invalidAccessCodeMessage=Érvénytelen hozzáférési kód.
+sessionNotActiveMessage=A munkamenet inaktív.
+invalidCodeMessage=Hiba történt, kérem, lépjen be újra az alkalmazásán keresztül.
+cookieNotFoundMessage=Süti nem található. Kérem, ellenőrizze, hogy a böngészőjében engedélyezve vannak-e a sütik.
+insufficientLevelOfAuthentication=A kért hitelesítési szint nem teljesült
+identityProviderUnexpectedErrorMessage=Váratlan hiba történt a személyazonosság-kezelőn keresztül intézett hitelesítés során.
+identityProviderMissingStateMessage=Nincsen "state" a személyazonosság-kezelő válaszüzenetében.
+identityProviderInvalidResponseMessage=Érvénytelen válasz a személyazonosság-kezelőtől.
+identityProviderInvalidSignatureMessage=Érvénytelen aláírás a személyazonosság-kezelő válaszüzenetében.
+identityProviderNotFoundMessage=A megadott azonosítóval személyazonosság-kezelő nem található.
+identityProviderLinkSuccess=Sikeresen megerősítette e-mail címét. Kérem, térjen vissza az eredeti böngészőjébe, és onnan folytassa a belépési eljárást.
+staleCodeMessage=Ez a lap már nem érvényes, kérem, térjen vissza az alkalmazásába és lépjen be ismét.
+realmSupportsNoCredentialsMessage=Ez a tartomány nem támogat jelszó alapú azonosítást.
+credentialSetupRequired=Belépés sikertelen, jelszó beállítás szükséges.
+identityProviderNotUniqueMessage=Ez a tartomány több személyazonosság-kezelőt támogat. Nem sikerült meghatározni, hogy melyik személyazonosság-kezelőt kellene a hitelesítéshez alkalmazni.
+emailVerifiedMessage=Az e-mail címét megerősítettük.
+staleEmailVerificationLink=Az a hivatkozás, amelyikre rákattintott elévült és érvényét vesztette. Talán már korábban megerősítette az e-mail címét?
+identityProviderAlreadyLinkedMessage=A(z) {0}-tól/től visszakapott összekapcsolt személyazonosság már össze van kötve egy másik felhasználói fiókkal.
+confirmAccountLinking=Erősítse meg a(z) {0} személyazonosság-kezelő {1} fiókjának összekötését a felhasználói fiókjával.
+confirmEmailAddressVerification=Erősítse meg a(z) {0} e-mail cím érvényességét.
+confirmExecutionOfActions=Hajtsa végre a következő művelet(ek)et
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fi=Suomi
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_lv=Latviešu
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+
+backToApplication=&laquo; Vissza az alkalmazásba
+missingParameterMessage=Hiányzó paraméterek\: {0}
+clientNotFoundMessage=A kliens nem található.
+clientDisabledMessage=A kliens inaktív.
+invalidParameterMessage=Érvénytelen paraméter\: {0}
+alreadyLoggedIn=Már korábban belépett.
+differentUserAuthenticated=Ebben a munkamenetben már korábban belépett ''{0}'' felhasználónévvel. Kérem, előbb lépjen ki a munkamenetből.
+brokerLinkingSessionExpired=Ügynök fiók összekötést kezdeményezett, de az aktuális munkamenete már érvénytelen.
+proceedWithAction=&raquo; Kattintson ide a folytatáshoz
+acrNotFulfilled=A hitelesítési követelmények nem teljesültek
+
+requiredAction.CONFIGURE_TOTP=Egyszer használatos jelszó (OTP) beállítása
+requiredAction.TERMS_AND_CONDITIONS=Felhasználási feltételek
+requiredAction.UPDATE_PASSWORD=Jelszó csere
+requiredAction.UPDATE_PROFILE=Fiók adatok módosítása
+requiredAction.VERIFY_EMAIL=E-mail cím megerősítése
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Biztonsági kódok generálása
+requiredAction.webauthn-register-passwordless=Jelszó nélküli WebAuthn regisztrálása
+
+invalidTokenRequiredActions=A linkben található szükséges műveletek érvénytelenek.
+
+doX509Login=Beléptetés mint\:
+clientCertificate=X509 kliens tanúsítvány\:
+noCertificate=[Nincs tanúsítvány]
+
+
+pageNotFound=A kért lap nem található
+internalServerError=Belső hiba történt
+
+console-username=Felhasználónév:
+console-password=Jelszó:
+console-otp=Egyszer használatos jelszó (OTP):
+console-new-password=Új jelszó:
+console-confirm-password=Jelszó megerősítés:
+console-update-password=Cserélje le jelszavát.
+console-verify-email=Meg kell erősítenie az e-mail címét. Egy e-mail üzenetet küldtünk a(z) {0} e-mail címre amely egy megerősítő kódot tartalmaz. Kérem, írja be a kapott kódot a lenti beviteli mezőbe.
+console-email-code=e-mail  üzenetben kapott ellenőrző kód:
+console-accept-terms=Elfogadja a felhasználási feltételeket? [i/n]:
+console-accept=i
+
+# Openshift messages
+openshift.scope.user_info=Felhasználó adatok
+openshift.scope.user_check-access=Felhasználó hozzáférés adatok
+openshift.scope.user_full=Teljes hozzáférés
+openshift.scope.list-projects=Projektek listája
+
+# SAML authentication
+saml.post-form.title=Hitelesítés átirányítás
+saml.post-form.message=Átirányítás folyamatban, kérem, várjon.
+saml.post-form.js-disabled=A JavaScript nincs engedélyezve. A folytatás előtt ajánlott bekapcsolni a JavaScript támogatást. Kattintson a lenti gombra a folytatáshoz. 
+saml.artifactResolutionServiceInvalidResponse=Az artifact nem található.
+
+#authenticators
+otp-display-name=Hitelesítő alkalmazás
+otp-help-text=Adja meg az ellenőrző kódot a hitelesítő alkalmazásból
+otp-reset-description=Melyik OTP beállítást kell eltávolítani?
+password-display-name=Jelszó
+password-help-text=Lépjen be a jelszava megadásával
+auth-username-form-display-name=Felhasználónév
+auth-username-form-help-text=Kezdje meg a belépést a felhasználónevének megadásával
+auth-username-password-form-display-name=Felhasználónév és jelszó
+auth-username-password-form-help-text=Lépjen be a felhasználóneve és jelszava megadásával.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Biztonsági hitelesítő kód
+auth-recovery-authn-code-form-help-text=Írjon be egy biztonsági kódot a korábban generáltak közül.
+auth-recovery-code-info-message=Írja be a használni kívánt biztonsági kódot
+auth-recovery-code-prompt=Biztonsági kód #{0}
+auth-recovery-code-header=Bejelentkezés egy biztonsági kód segítségével
+recovery-codes-error-invalid=Érvénytelen biztonsági kód
+recovery-code-config-header=Biztonsági hitelesítő kódok
+recovery-code-config-warning-title=Ezen kódok megtekintésére nincs lehetőség az oldal elhagyása után
+recovery-code-config-warning-message=Nyomtassa ki, töltse le vagy mentse el a kódokat egy biztonságos helyre. A beállítás megszakítása törli ezeket a kódokat a felhasználói fiókjából.
+recovery-codes-print=Nyomtatás
+recovery-codes-download=Letöltés
+recovery-codes-copy=Másolás
+recovery-codes-copied=Vágólapra másolva
+recovery-codes-confirmation-message=Elmentettem a biztonsági kódokat egy biztonságos helyre
+recovery-codes-action-complete=Beállítás befejezése
+recovery-codes-action-cancel=Beállítás megszakítása
+recovery-codes-download-file-header=Tartsa a biztonsági kódokat egy biztonságos helyen
+recovery-codes-download-file-description=A biztonsági kódok egyszer használatos jelkódok, melyek segítségével bejelentkezhet a fiókjába, ha nem fér hozzá a hitelesítő alkalmazáshoz.
+recovery-codes-download-file-date=Biztonsági kódok generálva
+recovery-codes-label-default=Biztonsági kódok
+
+# WebAuthn
+webauthn-display-name=Biztonsági kulcs
+webauthn-help-text=Használja a biztonsági kulcsát a belépéshez.
+webauthn-passwordless-display-name=Biztonsági kulcs
+webauthn-passwordless-help-text=Használja a biztonsági kulcsát a jelszómentes belépéshez.
+webauthn-login-title=Biztonsági kulcs alapú belépés
+webauthn-registration-title=Biztonsági kulcs regisztráció
+webauthn-available-authenticators=Elérhető hitelesítő alkalmazások
+webauthn-unsupported-browser-text=A WebAuthn protokoll a böngésző által nem támogatott. Próbálja egy másikkal, vagy vegye fel a kapcsolatot az alkalmazás adminisztrátorával.
+webauthn-doAuthenticate=Bejelentkezés biztonsági kulccsal
+webauthn-createdAt-label=Létrehozva
+
+# WebAuthn Error
+webauthn-error-title=Biztonsági kulcs hiba
+webauthn-error-registration=Nem sikerült regisztrálni a biztonsági kulcsot.
+webauthn-error-api-get=Nem sikerült a hitelesítés a biztonsági kulccsal.
+webauthn-error-different-user=Az először hitelesített felhasználó nem az, akit a biztonsági kulccsal azonosítottunk.
+webauthn-error-auth-verification=A biztonsági kulcs alapú hitelesítés eredménye érvénytelen.
+webauthn-error-register-verification=A biztonsági kulcs alapú regisztráció eredménye érvénytelen.
+webauthn-error-user-not-found=Ismeretlen felhasználót hitelesítettünk a biztonsági kulcs alapján.
+
+# Identity provider
+identity-provider-redirector=Összekötés másik személyazonosság-kezelővel
+identity-provider-login-label=Egyéb bejelentkezési módok
+idp-email-verification-display-name=E-mail megerősítés
+idp-email-verification-help-text=Felhasználói fiók összekapcsolása az e-mail cím megerősítésével.
+idp-username-password-form-display-name=Felhasználónév és jelszó
+idp-username-password-form-help-text=Felhasználói fiók összekapcsolása bejelentkezéssel.
+
+finalDeletionConfirmation=A felhasználói fiók törlése után annak visszaállítására nincs mód. A fiókja megtartásához kattintson a Mégse gombra.
+irreversibleAction=Ez a művelet visszavonhatatlan
+deleteAccountConfirm=Felhasználói fiók törlésének megerősítése
+
+deletingImplies=A felhasználói fiókjának törlésével jár:
+errasingData=Összes adatának törlése
+loggingOutImmediately=Azonnali kijelentkezés
+accountUnusable=Az alkalmazás további használata nem lesz lehetséges ezzel a felhasználói fiókkal
+userDeletedSuccessfully=Felhasználói fiók törlése sikeres
+
+access-denied=Hozzáférés megtagadva
+access-denied-when-idp-auth=Hozzáférés megtagadva hitelesítés során: {0}
+
+frontchannel-logout.title=Kijelentkezés
+frontchannel-logout.message=A következő alkalmazásokból jelentkezik ki
+logoutConfirmTitle=Kijelentkezés
+logoutConfirmHeader=Valóban ki szeretne jelentkezni?
+doLogout=Kijelentkezés
+
+readOnlyUsernameMessage=A felhasználónév nem módosítható.
diff --git a/themes/custom-theme-template/login/messages/messages_it.properties b/themes/custom-theme-template/login/messages/messages_it.properties
new file mode 100644
index 0000000000000000000000000000000000000000..2fb00260671712b26692bc39136cabd0e3e45b68
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_it.properties
@@ -0,0 +1,358 @@
+doLogIn=Accedi
+doRegister=Registrati
+doRegisterSecurityKey=Registrati
+doCancel=Annulla
+doSubmit=Invia
+doBack=Indietro
+doYes=Sì
+doNo=No
+doContinue=Continua
+doIgnore=Ignora
+doAccept=Accetta
+doDecline=Nega
+doForgotPassword=Password dimenticata?
+doClickHere=Clicca qui
+doImpersonate=Impersona
+doTryAgain=Prova ancora
+doTryAnotherWay=Prova in un altro modo
+kerberosNotConfigured=Kerberos non configurato
+kerberosNotConfiguredTitle=Kerberos non configurato
+bypassKerberosDetail=Non sei connesso via Kerberos o il tuo browser non supporta l''autenticazione a Kerberos. Fai clic su Continua per accedere in modo alternativo.
+kerberosNotSetUp=Kerberos non è configurato. Non puoi effettuare l''accesso.
+registerTitle=Registrati
+loginAccountTitle=Accedi
+loginTitle=Accedi a {0}
+loginTitleHtml={0}
+impersonateTitle={0} Impersona utente
+impersonateTitleHtml=<strong>{0}</strong> Impersona utente
+realmChoice=Realm
+unknownUser=Utente sconosciuto
+loginTotpTitle=Configura autenticazione mobile
+loginProfileTitle=Aggiorna profilo
+loginTimeout=Stai impiegando troppo tempo per accedere. Il processo di autenticazione verrà riavviato.
+oauthGrantTitle=Autenticazione concessa
+oauthGrantTitleHtml={0}
+errorTitle=Siamo spiacenti…
+errorTitleHtml=Siamo <strong>spiacenti</strong>...
+emailVerifyTitle=Verifica l''email
+emailForgotTitle=Password dimenticata?
+updatePasswordTitle=Aggiorna password
+codeSuccessTitle=Codice di successo
+codeErrorTitle=Codice di errore\: {0}
+displayUnsupported=Tipo display richiesto non supportato
+browserRequired=È richiesto il browser per il login
+browserContinue=È richiesto il browser per continuare il login
+browserContinuePrompt=Aprire il browser per continuare il login? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Termini e condizioni
+termsText=<p>Termini e condizioni da definire</p>
+termsPlainText=Termini e condizioni da definire.
+
+recaptchaFailed=Recaptcha non valido
+recaptchaNotConfigured=Il Recaptcha è obbligatorio, ma non configurato
+consentDenied=Permesso negato.
+
+noAccount=Nuovo utente?
+username=Username
+usernameOrEmail=Username o email
+firstName=Nome
+givenName=Nome
+fullName=Nome completo
+lastName=Cognome
+familyName=Cognome
+email=Email
+password=Password
+passwordConfirm=Conferma password
+passwordNew=Nuova Password
+passwordNewConfirm=Conferma nuova password
+rememberMe=Ricordami
+authenticatorCode=Codice One-time
+address=Indirizzo
+locality=Città o Località
+street=Via
+region=Stato, Provincia, o Regione
+postal_code=CAP
+country=Paese
+emailVerified=Email verificata
+gssDelegationCredential=Credenziali delega GSS
+
+profileScopeConsentText=Profilo utente
+emailScopeConsentText=Indirizzo email
+addressScopeConsentText=Indirizzo
+phoneScopeConsentText=Numero di telefono
+offlineAccessScopeConsentText=Accesso offline
+samlRoleListScopeConsentText=I miei ruoli
+rolesScopeConsentText=Ruoli utente
+
+restartLoginTooltip=Riavvia login
+
+loginTotpIntro=Devi impostare un generatore di OTP (password temporanea valida una volta sola) per accedere a questo account
+loginTotpStep1=Installa una delle seguenti applicazioni sul tuo dispositivo mobile
+loginTotpStep2=Apri l''applicazione e scansiona il codice QR
+loginTotpStep3=Scrivi il codice monouso fornito dall''applicazione e premi Invia per completare il setup
+loginTotpStep3DeviceName=Fornisci il nome del dispositivo per aiutarti a gestire i dispositivi di autenticazione.
+loginTotpManualStep2=Apri l''applicazione e scrivi la chiave
+loginTotpManualStep3=Usa le seguenti impostazioni se l''applicazione lo consente
+loginTotpUnableToScan=Non riesci a scansionare il codice QR?
+loginTotpScanBarcode=Vuoi scansionare il codice QR?
+loginCredential=Credenziali
+loginOtpOneTime=Codice monouso
+loginTotpType=Tipo
+loginTotpAlgorithm=Algoritmo
+loginTotpDigits=Cifre
+loginTotpInterval=Intervallo
+loginTotpCounter=Contatore
+loginTotpDeviceName=Nome del dispositivo di autenticazione
+
+loginTotp.totp=Basato sull''ora
+loginTotp.hotp=Basato sul contatore
+
+loginChooseAuthenticator=Seleziona il tuo metodo di autenticazione
+
+oauthGrantRequest=Vuoi assegnare questi privilegi di accesso?
+inResource=per
+
+emailVerifyInstruction1=Ti è stata inviata una email con le istruzioni per la verifica della tua email.
+emailVerifyInstruction2=Non hai ricevuto un codice di verifica nella tua email?
+emailVerifyInstruction3=per rinviare la email.
+
+emailLinkIdpTitle=Collega {0}
+emailLinkIdp1=Ti è stata inviata una email con le istruzioni per collegare l''account {0} {1} con il tuo account {2}.
+emailLinkIdp2=Non hai ricevuto un codice di verifica nella tua email?
+emailLinkIdp3=Per rinviare la email.
+emailLinkIdp4=Se hai già verificato l''indirizzo email in un altro browser
+emailLinkIdp5=per continuare.
+
+backToLogin=&laquo; Torna al Login
+
+emailInstruction=Inserisci la tua username o l''indirizzo email e ti manderemo le istruzioni per creare una nuova password.
+
+copyCodeInstruction=Copia questo codice e incollalo nella tua applicazione:
+
+pageExpiredTitle=La pagina è scaduta
+pageExpiredMsg1=Per ripetere il login
+pageExpiredMsg2=Per continuare con il login
+
+personalInfo=Informazioni personali:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Crea realm
+role_create-client=Crea client
+role_view-realm=Visualizza realm
+role_view-users=Visualizza utenti
+role_view-applications=Visualizza applicazioni
+role_view-clients=Visualizza client
+role_view-events=Visualizza eventi
+role_view-identity-providers=Visualizza identity provider
+role_manage-realm=Gestisci realm
+role_manage-users=Gestisci utenti
+role_manage-applications=Gestisci applicazioni
+role_manage-identity-providers=Gestisci identity provider
+role_manage-clients=Gestisci client
+role_manage-events=Gestisci eventi
+role_view-profile=Visualizza profilo
+role_manage-account=Gestisci account
+role_manage-account-links=Gestisci i link per l''account
+role_read-token=Leggi il token
+role_offline-access=Accesso offline
+client_account=Account
+client_account-console=Console account
+client_security-admin-console=Console di amministrazione di sicurezza
+client_admin-cli=Admin CLI
+client_realm-management=Gestione realm
+client_broker=Broker
+
+requiredFields=Campi obbligatori
+
+invalidUserMessage=Username o password non validi.
+invalidUsernameMessage=Username non valido.
+invalidUsernameOrEmailMessage=Username o email non validi.
+invalidPasswordMessage=Password non valida.
+invalidEmailMessage=Indirizzo email non valido.
+accountDisabledMessage=L''account è disabilitato, contatta il tuo amministratore.
+accountTemporarilyDisabledMessage=L''account è temporaneamente disabilitato; contatta il tuo amministratore o prova più tardi.
+expiredCodeMessage=Login scaduto. Riprovare.
+expiredActionMessage=Azione scaduta. Continuare adesso con in login.
+expiredActionTokenNoSessionMessage=Azione scaduta.
+expiredActionTokenSessionExistsMessage=Azione scaduta. Ricominciare.
+
+missingFirstNameMessage=Inserisci il nome.
+missingLastNameMessage=Inserisci il cognome.
+missingEmailMessage=Inserisci l''email.
+missingUsernameMessage=Inserisci l''username.
+missingPasswordMessage=Inserisci la password.
+missingTotpMessage=Inserisci il codice di autenticazione.
+missingTotpDeviceNameMessage=Inserisci il nome del dispositivo di autenticazione.
+notMatchPasswordMessage=Le password non coincidono.
+
+invalidPasswordExistingMessage=Password esistente non valida.
+invalidPasswordBlacklistedMessage=Password non valida: la password non è consentita.
+invalidPasswordConfirmMessage=La password di conferma non coincide.
+invalidTotpMessage=Codice di autenticazione non valido.
+
+usernameExistsMessage=Username già esistente.
+emailExistsMessage=Email già esistente.
+
+federatedIdentityExistsMessage=L''utente con {0} {1} esiste già. Effettua il login nella gestione account per associare l''account.
+
+confirmLinkIdpTitle=Account già esistente
+federatedIdentityConfirmLinkMessage=L''utente con {0} {1} esiste già. Come vuoi procedere?
+federatedIdentityConfirmReauthenticateMessage=Autenticati per associare il tuo account con {0}
+confirmLinkIdpReviewProfile=Rivedi profilo
+confirmLinkIdpContinue=Aggiungi all''account esistente
+
+configureTotpMessage=Devi impostare un autenticatore per attivare il tuo account.
+updateProfileMessage=Devi aggiornare il tuo profilo utente per attivare il tuo account.
+updatePasswordMessage=Devi cambiare la password per attivare il tuo account.
+resetPasswordMessage=Devi cambiare la password.
+verifyEmailMessage=Devi verificare il tuo indirizzo email per attivare il tuo account.
+linkIdpMessage=Devi verificare il tuo indirizzo email per associare il tuo account con {0}.
+
+emailSentMessage=Riceverai a breve una email con maggiori istruzioni.
+emailSendErrorMessage=Invio email fallito, riprova più tardi.
+
+accountUpdatedMessage=Il tuo account è stato aggiornato.
+accountPasswordUpdatedMessage=La tua password è stata aggiornata.
+
+delegationCompleteHeader=Login completato
+delegationCompleteMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione.
+delegationFailedHeader=Login fallito
+delegationFailedMessage=Puoi chiudere questa finestra del browser e tornare alla tua applicazione per provare ad accedere nuovamente.
+
+noAccessMessage=Nessun accesso
+
+invalidPasswordMinLengthMessage=Password non valida: lunghezza minima {0}.
+invalidPasswordMinDigitsMessage=Password non valida: deve contenere almeno {0} numeri.
+invalidPasswordMinLowerCaseCharsMessage=Password non valida: deve contenere almeno {0} caratteri minuscoli.
+invalidPasswordMinUpperCaseCharsMessage= Password non valida: deve contenere almeno {0} caratteri maiuscoli.
+invalidPasswordMinSpecialCharsMessage= Password non valida: deve contenere almeno {0} caratteri speciali.
+invalidPasswordNotUsernameMessage=Password non valida: non deve essere uguale alla username.
+invalidPasswordRegexPatternMessage=Password non valida: fallito il match con una o più espressioni regolari.
+invalidPasswordHistoryMessage=Password non valida: non deve essere uguale ad una delle ultime {0} password.
+invalidPasswordGenericMessage=Password non valida: la nuova password non rispetta le indicazioni previste.
+
+failedToProcessResponseMessage=Fallimento nell''elaborazione della risposta
+httpsRequiredMessage=HTTPS richiesto
+realmNotEnabledMessage=Realm non abilitato
+invalidRequestMessage=Richiesta non valida
+failedLogout=Logout fallito
+unknownLoginRequesterMessage=Richiedente di Login non riconosciuto
+loginRequesterNotEnabledMessage=Richiedente di Login non abilitato
+bearerOnlyMessage=Alle applicazioni di tipo Bearer-only non è consentito di effettuare il login tramite browser
+standardFlowDisabledMessage=Al client non è consentito di effettuare il login tramite browser con questo response_type. Standard flow è stato disabilitato per il client.
+implicitFlowDisabledMessage=Al client non è consentito di effettuare il login tramite browser con questo response_type. Implicit flow è stato disabilitato per il client.
+invalidRedirectUriMessage=Redirect uri non valido
+unsupportedNameIdFormatMessage=NameIDFormat non supportato
+invalidRequesterMessage=Richiedente non valido
+registrationNotAllowedMessage=Registrazione non permessa
+resetCredentialNotAllowedMessage=Reimpostazione della credenziale non permessa
+
+permissionNotApprovedMessage=Permesso non approvato.
+noRelayStateInResponseMessage=Nessun relay state in risposta dall''identity provider.
+insufficientPermissionMessage=Permessi insufficienti per associare le identità.
+couldNotProceedWithAuthenticationRequestMessage=Impossibile procedere con la richiesta di autenticazione all''identity provider
+couldNotObtainTokenMessage=Non posso ottenere un token dall''identity provider.
+unexpectedErrorRetrievingTokenMessage=Errore inaspettato nel recupero del token dall''identity provider.
+unexpectedErrorHandlingResponseMessage=Errore inaspettato nella gestione della risposta dall''identity provider.
+identityProviderAuthenticationFailedMessage=Autenticazione fallita. Non posso effettuare l''autenticazione con l''identity provider.
+couldNotSendAuthenticationRequestMessage=Impossibile inviare la richiesta di autenticazione all''identity provider.
+unexpectedErrorHandlingRequestMessage=Errore inaspettato nella gestione della richiesta di autenticazione all''identity provider.
+invalidAccessCodeMessage=Codice di accesso non valido.
+sessionNotActiveMessage=Sessione non attiva.
+invalidCodeMessage=Si è verificato un errore, effettua di nuovo il login nella tua applicazione.
+identityProviderUnexpectedErrorMessage=Errore imprevisto durante l''autenticazione con identity provider
+identityProviderNotFoundMessage=Non posso trovare un identity provider con l''identificativo.
+identityProviderLinkSuccess=Hai verificato con successo la tua email. Torna al tuo browser iniziale e continua da lì con il login.
+staleCodeMessage=Questa pagina non è più valida, torna alla tua applicazione ed effettua nuovamente l''accesso
+realmSupportsNoCredentialsMessage=Il realm non supporta nessun tipo di credenziali.
+credentialSetupRequired=Impossibile effettuare il login, è richiesto il setup delle credenziali.
+identityProviderNotUniqueMessage=Il realm supporta più di un identity provider. Impossibile determinare quale identity provider deve essere utilizzato per autenticarti.
+emailVerifiedMessage=Il tuo indirizzo email è stato verificato.
+staleEmailVerificationLink=Il link che hai cliccato è un link scaduto e non è più valido. Forse hai già verificato la tua email?
+identityProviderAlreadyLinkedMessage=L''identità federata restituita dall''identity provider {0} è già associata ad un altro utente.
+confirmAccountLinking=Conferma il collegamento per l''account {0} dell''identity provider {1} con il tuo account.
+confirmEmailAddressVerification=Conferma la validità dell''indirizzo email {0}.
+confirmExecutionOfActions=Esegui la/le seguenti azione/i
+locale_it=Italiano
+
+backToApplication=&laquo; Torna all''applicazione
+missingParameterMessage=Parametri mancanti\: {0}
+clientNotFoundMessage=Client non trovato.
+clientDisabledMessage=Client disabilitato.
+invalidParameterMessage=Parametro non valido\: {0}
+alreadyLoggedIn=Sei già connesso.
+differentUserAuthenticated=Se già autenticato con l''utente ''{0}'' in questa sessione. Per favore, fai prima il logout.
+brokerLinkingSessionExpired=È stato richiesta un''associazione a un account broker, ma la sessione corrente non è più valida.
+proceedWithAction=» Clicca qui per continuare
+
+requiredAction.CONFIGURE_TOTP=Configura OTP
+requiredAction.TERMS_AND_CONDITIONS=Termini e condizioni
+requiredAction.UPDATE_PASSWORD=Aggiornamento password
+requiredAction.UPDATE_PROFILE=Aggiornamento profilo
+requiredAction.VERIFY_EMAIL=Verifica dell''indirizzo email
+
+doX509Login=Sarai connesso come\:
+clientCertificate=Certificato client X509\:
+noCertificate=[Nessun certificato]
+
+
+pageNotFound=Pagina non trovata
+internalServerError=Si è verificato un errore interno del server
+
+console-username=Username:
+console-password=Password:
+console-otp=One-time password:
+console-new-password=Nuova password:
+console-confirm-password=Conferma password:
+console-update-password=È richiesto l''aggiornamento della tua password.
+console-verify-email=Devi verificare il tuo indirizzo email. È stata inviata una email a {0} che contiene un codice di verifica. Per favore inserisci il codice nella casella di testo seguente.
+console-email-code=Codice email:
+console-accept-terms=Accetti i termini? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=Informazioni utente
+openshift.scope.user_check-access=Informazioni di accesso per l''utente
+openshift.scope.user_full=Accesso completo
+openshift.scope.list-projects=Elenca i progetti
+
+# SAML authentication
+saml.post-form.title=Reindirizzamento per l''autenticazione
+saml.post-form.message=Reindirizzamento, attendere per favore.
+saml.post-form.js-disabled=JavaScript è disabilitato. È fortemente consigliato abilitarlo. Clicca sul bottone seguente per continuare.
+
+#authenticators
+otp-display-name=Applicazione di autenticazione
+otp-help-text=Inserire un codice di verifica fornito dall''applicazione di autenticazione.
+password-display-name=Password
+password-help-text=Accedi inserendo la tua password.
+auth-username-form-display-name=Username
+auth-username-form-help-text=Inizia il login inserendo la tua username
+auth-username-password-form-display-name=Username e password
+auth-username-password-form-help-text=Accedi inserendo la tua username e la password.
+
+# WebAuthn
+webauthn-display-name=Chiave di sicurezza
+webauthn-help-text=Utilizza la tua chiave di sicurezza per accedere.
+webauthn-passwordless-display-name=Chiave di sicurezza
+webauthn-passwordless-help-text=Utilizza la tua chiave di sicurezza per l''accesso senza password.
+webauthn-login-title=Login con chiave di sicurezza
+webauthn-registration-title=Registrazione chiave di sicurezza
+webauthn-available-authenticators=Autenticatori disponibili
+
+# WebAuthn Error
+webauthn-error-title=Errore della chiave di sicurezza
+webauthn-error-registration=Impossibile registrare la tua chiave di sicurezza.
+webauthn-error-api-get=Autenticazione con la chiave di sicurezza fallita.
+webauthn-error-different-user=Il primo utente autenticato non è quello autenticato tramite la chiave di sicurezza.
+webauthn-error-auth-verification=Il risultato dell''autenticazione con la chiave di sicurezza non è valido.
+webauthn-error-register-verification=Il risultato della registrazione della chiave di sicurezza non è valido.
+webauthn-error-user-not-found=Utente sconosciuto autenticato con la chiave di sicurezza.
+
+# Identity provider
+identity-provider-redirector=Connettiti con un altro identity provider.
+identity-provider-login-label=Oppure accedi con
+
+readOnlyUsernameMessage=Non puoi aggiornare il tuo nome utente poiché è in modalità sola lettura.
diff --git a/themes/custom-theme-template/login/messages/messages_ja.properties b/themes/custom-theme-template/login/messages/messages_ja.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ab3476dfd61750906c1307d8ebb50faee892866e
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_ja.properties
@@ -0,0 +1,362 @@
+doLogIn=ログイン
+doRegister=登録
+doRegisterSecurityKey=登録
+doCancel=キャンセル
+doSubmit=送信
+doBack=戻る
+doYes=はい
+doNo=いいえ
+doContinue=続ける
+doIgnore=無視
+doAccept=承諾
+doDecline=却下
+doForgotPassword=パスワードをお忘れですか?
+doClickHere=クリックしてください
+doImpersonate=代理ログイン
+doTryAgain=再試行してください
+doTryAnotherWay=別の方法を試してください
+kerberosNotConfigured=Kerberosは設定されていません
+kerberosNotConfiguredTitle=Kerberosは設定されていません
+bypassKerberosDetail=Kerberosでログインしていないか、ブラウザーでKerberosログインの設定がされていません。他の手段でログインするには「続ける」をクリックしてください。
+kerberosNotSetUp=Kerberosが設定されていません。ログインできません。
+registerTitle=登録
+loginAccountTitle=アカウントにログイン
+loginTitle={0}にログイン
+loginTitleHtml={0}
+impersonateTitle={0}ユーザーの代理
+impersonateTitleHtml=<strong>{0}</strong>ユーザーの代理
+realmChoice=レルム
+unknownUser=不明なユーザー
+loginTotpTitle=モバイル・オーセンティケーターのセットアップ
+loginProfileTitle=アカウント情報の更新
+loginTimeout=ログイン試行がタイムアウトしました。ログインは最初から開始されます。
+oauthGrantTitle={0}へのアクセスを許可
+oauthGrantTitleHtml={0}
+errorTitle=申し訳ございません
+errorTitleHtml=<strong>申し訳ございません</strong>
+emailVerifyTitle=Eメール確認
+emailForgotTitle=パスワードをお忘れですか?
+updatePasswordTitle=パスワードの更新
+codeSuccessTitle=成功コード
+codeErrorTitle=エラーコード\: {0}
+displayUnsupported=要求された表示タイプがサポートされていません
+browserRequired=ログインに必要なブラウザー
+browserContinue=ログインを完了するために必要なブラウザー
+browserContinuePrompt=ブラウザーを開いてログインを続行しますか? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=利用規約
+termsText=<p>利用規約はここで設定する必要があります</p>
+termsPlainText=定義される利用規約。
+
+recaptchaFailed=無効なreCAPTCHA
+recaptchaNotConfigured=reCAPTCHAが必須ですが、設定されていません
+consentDenied=同意が拒否されました。
+
+noAccount=新規ユーザーですか?
+username=ユーザー名
+usernameOrEmail=ユーザー名またはメールアドレス
+firstName=名
+givenName=名
+fullName=氏名
+lastName=姓
+familyName=姓
+email=Eメール
+password=パスワード
+passwordConfirm=パスワード(確認)
+passwordNew=新しいパスワード
+passwordNewConfirm=新しいパスワード(確認)
+rememberMe=ログイン状態の保存
+authenticatorCode=ワンタイムコード
+address=住所
+street=番地
+locality=市区町村
+region=都道府県
+postal_code=郵便番号
+country=国
+emailVerified=確認済みEメール
+gssDelegationCredential=GSS委譲クレデンシャル
+
+profileScopeConsentText=ユーザー・プロファイル
+emailScopeConsentText=メールアドレス
+addressScopeConsentText=アドレス
+phoneScopeConsentText=電話番号
+offlineAccessScopeConsentText=オフライン・アクセス
+samlRoleListScopeConsentText=ロール
+rolesScopeConsentText=ユーザーロール
+
+restartLoginTooltip=ログインを再開
+
+loginTotpIntro=このアカウントにアクセスするには、ワンタイム・パスワード・ジェネレーターを設定する必要があります
+loginTotpStep1=次のいずれかのアプリケーションをモバイルにインストールします。
+loginTotpStep2=アプリケーションを開き、バーコードをスキャンします。
+loginTotpStep3=アプリケーションから提供されたワンタイムコードを入力し、送信をクリックしてセットアップを終了します。
+loginTotpStep3DeviceName=OTPデバイスの管理に役立つデバイス名を指定します。
+loginTotpManualStep2=アプリケーションを開き、キーを入力します:
+loginTotpManualStep3=アプリケーションで設定できる場合は、次の設定値を使用します。
+loginTotpUnableToScan=スキャンできませんか?
+loginTotpScanBarcode=バーコードをスキャンしますか?
+loginCredential=クレデンシャル
+loginOtpOneTime=ワンタイムコード
+loginTotpType=タイプ
+loginTotpAlgorithm=アルゴリズム
+loginTotpDigits=桁
+loginTotpInterval=間隔
+loginTotpCounter=カウンター
+loginTotpDeviceName=デバイス名
+
+loginTotp.totp=時間ベース
+loginTotp.hotp=カウンターベース
+
+loginChooseAuthenticator=ログイン方法を選択してください
+
+oauthGrantRequest=これらのアクセス権限を付与しますか?
+inResource=in
+
+emailVerifyInstruction1=メールアドレスを確認する手順を記載したEメールを送信しました。
+emailVerifyInstruction2=Eメールで確認コードを受け取っていませんか?
+emailVerifyInstruction3=Eメールを再送信します。
+
+emailLinkIdpTitle=リンク {0}
+emailLinkIdp1={0}の{1}アカウントをあなたの{2}アカウントとリンクするための手順を記載したEメールを送信しました。
+emailLinkIdp2=Eメールで確認コードを受け取っていませんか?
+emailLinkIdp3=Eメールを再送信します。
+emailLinkIdp4=別のブラウザーでメールを確認済みの場合
+emailLinkIdp5=続けるには
+
+backToLogin=&laquo; ログインに戻る
+
+emailInstruction=ユーザー名またメールアドレスを入力してください。新しいパスワードの設定方法をご案内いたします。
+
+copyCodeInstruction=このコードをコピーし、あなたのアプリケーションにペーストしてください:
+
+pageExpiredTitle=ページの有効期限が切れています
+pageExpiredMsg1=ログインプロセスを再開するには
+pageExpiredMsg2=ログイン処理を続行するには
+
+personalInfo=個人情報:
+role_admin=管理者
+role_realm-admin=レルム管理者
+role_create-realm=レルムの作成
+role_create-client=クライアントの作成
+role_view-realm=レルムの参照
+role_view-users=ユーザーの参照
+role_view-applications=アプリケーションの参照
+role_view-clients=クライアントの参照
+role_view-events=イベントの参照
+role_view-identity-providers=アイデンティティー・プロバイダーの参照
+role_manage-realm=レルムの管理
+role_manage-users=ユーザーの管理
+role_manage-applications=アプリケーションの管理
+role_manage-identity-providers=アイデンティティー・プロバイダーの管理
+role_manage-clients=クライアントの管理
+role_manage-events=イベントの管理
+role_view-profile=プロファイルの参照
+role_manage-account=アカウントの管理
+role_manage-account-links=アカウントリンクの管理
+role_read-token=トークンの参照
+role_offline-access=オフライン・アクセス
+client_account=アカウント
+client_account-console=アカウント・コンソール
+client_security-admin-console=セキュリティー管理コンソール
+client_admin-cli=管理CLI
+client_realm-management=レルム管理
+client_broker=ブローカー
+
+requiredFields=必須フィールド
+
+invalidUserMessage=無効なユーザー名またはパスワードです。
+invalidUsernameMessage=ユーザー名が無効です。
+invalidUsernameOrEmailMessage=ユーザー名またはメールアドレスが無効です。
+invalidPasswordMessage=パスワードが無効です。
+invalidEmailMessage=無効なメールアドレスです。
+accountDisabledMessage=アカウントが無効です。管理者に連絡してください。
+accountTemporarilyDisabledMessage=アカウントが一時的に無効です。管理者に連絡するか、しばらく時間をおいてから再度お試しください。
+expiredCodeMessage=ログイン・タイムアウトが発生しました。再度ログインしてください。
+expiredActionMessage=アクションは期限切れです。今すぐログインしてください。
+expiredActionTokenNoSessionMessage=アクションは期限切れです。
+expiredActionTokenSessionExistsMessage=アクションは期限切れです。もう一度やり直してください。
+
+missingFirstNameMessage=名を指定してください。
+missingLastNameMessage=姓を指定してください。
+missingEmailMessage=Eメールを指定してください。
+missingUsernameMessage=ユーザー名を指定してください。
+missingPasswordMessage=パスワードを指定してください。
+missingTotpMessage=オーセンティケーター・コードを指定してください。
+missingTotpDeviceNameMessage=デバイス名を指定してください。
+notMatchPasswordMessage=パスワードが一致していません。
+
+invalidPasswordExistingMessage=既存のパスワードが不正です。
+invalidPasswordBlacklistedMessage=無効なパスワード: パスワードがブラックリストに含まれています。
+invalidPasswordConfirmMessage=パスワード確認が一致していません。
+invalidTotpMessage=無効なオーセンティケーター・コードです。
+
+usernameExistsMessage=既に存在するユーザー名です。
+emailExistsMessage=既に存在するEメールです。
+
+federatedIdentityExistsMessage={0}{1}のユーザーは既に存在します。そのアカウントをリンクするにはアカウント管理にログインしてください。
+
+confirmLinkIdpTitle=既に存在するアカウントです。
+federatedIdentityConfirmLinkMessage={0}{1}のユーザーは既に存在します。継続しますか?
+federatedIdentityConfirmReauthenticateMessage={1}でアカウントをリンクするために{0}として認証します
+nestedFirstBrokerFlowMessage={0}ユーザー{1}は既知のユーザーにリンクされていません。
+confirmLinkIdpReviewProfile=プロファイルの確認
+confirmLinkIdpContinue=既存のアカウントに追加する
+
+configureTotpMessage=アカウントを有効にするにはモバイル・オーセンティケーターのセットアップが必要です。
+updateProfileMessage=アカウントを有効にするにはユーザー・プロファイルの更新が必要です。
+updatePasswordMessage=アカウントを有効にするにはパスワードの更新が必要です。
+resetPasswordMessage=パスワードを変更する必要があります。
+verifyEmailMessage=アカウントを有効にするにはメールアドレスの確認が必要です。
+linkIdpMessage=アカウントを{0}とリンクするにはメールアドレスの確認が必要です。
+
+emailSentMessage=詳細な手順を記載したEメールをすぐに受信してください。
+emailSendErrorMessage=Eメールの送信に失敗しました。しばらく時間をおいてから再度お試しください。
+
+accountUpdatedMessage=アカウントが更新されました。
+accountPasswordUpdatedMessage=パスワードが更新されました。
+
+delegationCompleteHeader=ログインに成功しました
+delegationCompleteMessage=このブラウザーのウィンドウを閉じて、コンソール・アプリケーションに戻ることができます。
+delegationFailedHeader=ログインに失敗しました
+delegationFailedMessage=このブラウザー・ウィンドウを閉じてコンソール・アプリケーションに戻り、再度ログインを試みることができます。
+
+noAccessMessage=アクセスがありません
+
+invalidPasswordMinLengthMessage=無効なパスワード: 最小{0}の長さが必要です。
+invalidPasswordMinDigitsMessage=無効なパスワード: 少なくとも{0}文字の数字を含む必要があります。
+invalidPasswordMinLowerCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の小文字を含む必要があります。
+invalidPasswordMinUpperCaseCharsMessage=無効なパスワード: 少なくとも{0}文字の大文字を含む必要があります。
+invalidPasswordMinSpecialCharsMessage=無効なパスワード: 少なくとも{0}文字の特殊文字を含む必要があります。
+invalidPasswordNotUsernameMessage=無効なパスワード: ユーザー名と同じパスワードは禁止されています。
+invalidPasswordRegexPatternMessage=無効なパスワード: 正規表現パターンと一致しません。
+invalidPasswordHistoryMessage=無効なパスワード: 最近の{0}パスワードのいずれかと同じパスワードは禁止されています。
+invalidPasswordGenericMessage=無効なパスワード: 新しいパスワードはパスワード・ポリシーと一致しません。
+
+failedToProcessResponseMessage=応答を処理できませんでした
+httpsRequiredMessage=HTTPSが必須です
+realmNotEnabledMessage=レルムが有効ではありません
+invalidRequestMessage=無効なリクエストです
+failedLogout=ログアウトに失敗しました
+unknownLoginRequesterMessage=不明なログイン要求元です
+loginRequesterNotEnabledMessage=ログイン要求元は有効ではありません
+bearerOnlyMessage=bearer-onlyのアプリケーションはブラウザー・ログインを開始することが許可されていません
+standardFlowDisabledMessage=与えられたresponse_typeでクライアントはブラウザー・ログインを開始することが許可されていません。標準フローは無効です。
+implicitFlowDisabledMessage=与えられたresponse_typeでクライアントはブラウザー・ログインを開始することが許可されていません。インプリシット・フローは無効です。
+invalidRedirectUriMessage=無効なリダイレクトURIです
+unsupportedNameIdFormatMessage=サポートされていないNameID Formatです
+invalidRequesterMessage=無効な要求元です
+registrationNotAllowedMessage=登録は許可されていません
+resetCredentialNotAllowedMessage=クレデンシャルのリセットは許可されていません
+
+permissionNotApprovedMessage=パーミッションは承認されていません。
+noRelayStateInResponseMessage=アイデンティティー・プロバイダーからの応答にRelayStateがありません。
+insufficientPermissionMessage=アイデンティティーにリンクするには不十分なパーミッションです。
+couldNotProceedWithAuthenticationRequestMessage=アイデンティティー・プロバイダーへの認証リクエストを続行できませんでした。
+couldNotObtainTokenMessage=アイデンティティー・プロバイダーからトークンを取得できませんでした。
+unexpectedErrorRetrievingTokenMessage=アイデンティティー・プロバイダーからのトークン取得で予期せぬエラーが発生しました。
+unexpectedErrorHandlingResponseMessage=アイデンティティー・プロバイダーからの応答を処理する際に予期せぬエラーが発生しました。
+identityProviderAuthenticationFailedMessage=認証に失敗しました。アイデンティティー・プロバイダーを使用して認証できませんでした。
+couldNotSendAuthenticationRequestMessage=アイデンティティー・プロバイダーに認証リクエストを送信することができませんでした。
+unexpectedErrorHandlingRequestMessage=アイデンティティー・プロバイダーへの認証リクエストを処理する際に予期せぬエラーが発生しました。
+invalidAccessCodeMessage=無効なアクセスコードです。
+sessionNotActiveMessage=セッションが有効ではありません。
+invalidCodeMessage=エラーが発生しました。アプリケーションを介して再度ログインしてください。
+identityProviderUnexpectedErrorMessage=アイデンティティー・プロバイダーによる認証の際に予期せぬエラーが発生しました
+identityProviderNotFoundMessage=該当の識別子を持つアイデンティティー・プロバイダーが見つかりませんでした。
+identityProviderLinkSuccess=Eメールを正常に確認しました。元のブラウザーに戻ってログインしてください。
+staleCodeMessage=このページはもはや有効ではありませんので、アプリケーションに戻り再度ログインしてください
+realmSupportsNoCredentialsMessage=レルムはクレデンシャル・タイプをサポートしていません。
+credentialSetupRequired=ログインできません。クレデンシャルのセットアップが必要です。
+identityProviderNotUniqueMessage=レルムは複数のアイデンティティー・プロバイダーをサポートしています。どのアイデンティティー・プロバイダーが認証に使用されるべきか判断できませんでした。
+emailVerifiedMessage=メールアドレスが確認できました。
+staleEmailVerificationLink=クリックしたリンクは古いリンクであり、有効ではありません。おそらく、すでにメールを確認しています。
+identityProviderAlreadyLinkedMessage={0}によって返された連携済みアイデンティティーは、すでに別のユーザーにリンクされています。
+confirmAccountLinking=アイデンティティー・プロバイダー{1}のアカウント{0}とあなたのアカウントとのリンクを確認してください。
+confirmEmailAddressVerification=Eメールアドレス{0}の有効性を確認してください。
+confirmExecutionOfActions=次の操作を実行します。
+
+backToApplication=&laquo; アプリケーションに戻る
+missingParameterMessage=不足パラメーター\: {0}
+clientNotFoundMessage=クライアントが見つかりません。
+clientDisabledMessage=クライアントが無効になっています。
+invalidParameterMessage=無効なパラメーター\: {0}
+alreadyLoggedIn=既にログインしています。
+differentUserAuthenticated=すでにこのセッションで異なるユーザー''{0}''として認証されています。まずログアウトしてください。
+brokerLinkingSessionExpired=要求されたブローカー・アカウントのリンクは、現在のセッションでは有効ではありません。
+proceedWithAction=&raquo; 続行するにはここをクリックしてください
+
+requiredAction.CONFIGURE_TOTP=OTPの設定
+requiredAction.TERMS_AND_CONDITIONS=利用規約
+requiredAction.UPDATE_PASSWORD=パスワードの更新
+requiredAction.UPDATE_PROFILE=プロファイルの更新
+requiredAction.VERIFY_EMAIL=Eメールの確認
+
+doX509Login=次のユーザーとしてログインします\:
+clientCertificate=X509クライアント証明書\:
+noCertificate=[証明書なし]
+
+
+pageNotFound=ページが見つかりません
+internalServerError=内部サーバーエラーが発生しました
+
+console-username=ユーザー名:
+console-password=パスワード:
+console-otp=ワンタイム・パスワード:
+console-new-password=新しいパスワード:
+console-confirm-password=パスワードの確認:
+console-update-password=パスワードの更新が必要です。
+console-verify-email=メールアドレスを確認する必要があります。確認コードを含むメールを{0}に送信しました。このコードを以下に入力してください。
+console-email-code=Eメールコード:
+console-accept-terms=利用規約に同意しますか? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=ユーザー情報
+openshift.scope.user_check-access=ユーザーアクセス情報
+openshift.scope.user_full=フルアクセス
+openshift.scope.list-projects=プロジェクトの一覧表示
+
+# SAML authentication
+saml.post-form.title=認証リダイレクト
+saml.post-form.message=リダイレクトしています。お待ちください。
+saml.post-form.js-disabled=JavaScriptが無効になっています。有効にすることを強くお勧めします。継続するには、下のボタンをクリックしてください。
+
+#authenticators
+otp-display-name=オーセンティケーター・アプリケーション
+otp-help-text=オーセンティケーター・アプリケーションから取得した確認コードを入力してください。
+password-display-name=パスワード
+password-help-text=パスワードを入力してログインします。
+auth-username-form-display-name=ユーザー名
+auth-username-form-help-text=ユーザー名を入力してログインを開始します
+auth-username-password-form-display-name=ユーザー名とパスワード
+auth-username-password-form-help-text=ユーザー名とパスワードを入力してログインしてください。
+
+# WebAuthn
+webauthn-display-name=セキュリティーキー
+webauthn-help-text=セキュリティーキーを使用してログインしてください。
+webauthn-passwordless-display-name=セキュリティーキー
+webauthn-passwordless-help-text=パスワードレス・ログインにセキュリティーキーを使用します。
+webauthn-login-title=セキュリティーキー・ログイン
+webauthn-registration-title=セキュリティーキーの登録
+webauthn-available-authenticators=利用可能なオーセンティケーター
+
+# WebAuthn Error
+webauthn-error-title=セキュリティーキー・エラー
+webauthn-error-registration=セキュリティーキーを登録できませんでした。
+webauthn-error-api-get=セキュリティーキーによる認証に失敗しました。
+webauthn-error-different-user=最初に認証されたユーザーは、セキュリティーキーによって認証されたユーザーではありません。
+webauthn-error-auth-verification=セキュリティーキーの認証結果が無効です。
+webauthn-error-register-verification=セキュリティーキーの登録結果が無効です。
+webauthn-error-user-not-found=セキュリティーキーで認証された不明なユーザー。
+
+identity-provider-redirector=別のアイデンティティー・プロバイダーと接続する
+
+frontchannel-logout.title=ログアウト
+frontchannel-logout.message=以下のアプリケーションからログアウトしました。
+logoutConfirmTitle=ログアウト
+logoutConfirmHeader=ログアウトしますか?
+doLogout=ログアウト
+
+readOnlyUsernameMessage=読み取り専用のため、ユーザー名を更新することはできません。
diff --git a/themes/custom-theme-template/login/messages/messages_lt.properties b/themes/custom-theme-template/login/messages/messages_lt.properties
new file mode 100644
index 0000000000000000000000000000000000000000..9b3bb9481bdf5c0dc17f34cbde6e8127dd4d8ae6
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_lt.properties
@@ -0,0 +1,216 @@
+doLogIn=Prisijungti
+doRegister=Registruotis
+doRegisterSecurityKey=Registruotis
+doCancel=Atšaukti
+doSubmit=Patvirtinti
+doYes=Taip
+doNo=Ne
+doContinue=Tęsti
+doAccept=Patvirtinti
+doDecline=Atšaukti
+doForgotPassword=Pamiršote slaptažodį?
+doClickHere=Spauskite čia
+doImpersonate=Apsimesti kaip
+kerberosNotConfigured=Kerberos nesukonfigūruotas
+kerberosNotConfiguredTitle=Kerberos nesukonfigūruotas
+bypassKerberosDetail=Jūs neprisijungęs per Kerberos arba Jūsų naršyklė nesukonfigūruota Kerberos prisijungimui.  Tęskite ir pasirinkite kitą prisijungimo būdą
+kerberosNotSetUp=Kerberos nesukonfigūruotas.  Jūs negalite prisijungti.
+registerWithTitle=Registruotis su {0}
+registerWithTitleHtml={0}
+loginTitle=Prisijungti su {0}
+loginTitleHtml={0}
+impersonateTitle=Apsimesti kaip naudotojas {0} 
+impersonateTitleHtml=Apsimesti kaip <strong>{0}</strong>
+realmChoice=Sritis
+unknownUser=Nežinomas naudotojas
+loginTotpTitle=Mobilaus autentifikatoriaus nustatymas
+loginProfileTitle=Atnaujinti paskyros informaciją
+loginTimeout=Užtrukote per ilgai. Prisijungimo procesas pradedamas iš naujo.
+oauthGrantTitle=Suteitikti prieigą
+oauthGrantTitleHtml={0}
+errorTitle=Atsiprašome ...
+errorTitleHtml=<strong>Atsiprašome</strong> ...
+emailVerifyTitle=El. pašto adreso patvirtinimas
+emailForgotTitle=Pamiršote slaptažodį?
+updatePasswordTitle=Atnaujinti slaptažodį
+codeSuccessTitle=Sėkmė
+codeErrorTitle=Klaidos kodas\: {0}
+
+termsTitle=Naudojimo sąlygos
+termsTitleHtml=Naudojimo sąlygos
+termsText=<p>Naudojimo sąlygos nenurodytos</p>
+
+recaptchaFailed=Recaptcha neteisingas
+recaptchaNotConfigured=Reikalingas Recaptcha nesukonfigūruotas
+consentDenied=Prieiga draudžiama.
+
+noAccount=Dar neturite paskyros?
+username=Naudotojo vardas
+usernameOrEmail=Naudotojo vardas arba el. pašto adresas
+firstName=Vardas
+givenName=Vardas
+fullName=Pavardė
+lastName=Pavardė
+familyName=Pavardė
+email=El. paštas
+password=Slaptažodis
+passwordConfirm=Pakartotas slaptažodis
+passwordNew=Naujas slaptažodis
+passwordNewConfirm=Pakartotas naujas slaptažodis
+rememberMe=Prisiminti mane
+authenticatorCode=Vienkartinis kodas
+address=Adresas
+street=Gatvė
+locality=Miestas arba vietovė
+region=Rajonas
+postal_code=Pašto kodas
+country=Šalis
+emailVerified=El. pašto adresas patvirtintas
+gssDelegationCredential=GSS prisijungimo duomenų delegavimas
+
+loginTotpStep1=Įdiekite <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> arba Google Authenticator savo įrenginyje. Programėlės prieinamos <a href="https://play.google.com">Google Play</a> ir Apple App Store.
+loginTotpStep2=Atidarykite programėlę ir nuskenuokite barkodą arba įveskite kodą.
+loginTotpStep3=Įveskite programėlėje sugeneruotą vieną kartą galiojantį kodą ir paspauskite Saugoti norėdami prisijungti.
+loginOtpOneTime=Vienkartinis kodas
+
+oauthGrantRequest=Ar Jūs suteikiate šias prieigos teises?
+inResource=į
+
+emailVerifyInstruction1=El. paštas su instrukcijomis ir patvirtinimo nuoroda nusiųsti į Jūsų el. paštą.
+emailVerifyInstruction2=El. paštu negavote patvirtinimo kodo?
+emailVerifyInstruction3=pakartotoinai siųsti el. laišką.
+
+emailLinkIdpTitle=Susieti {0}
+emailLinkIdp1=El. pašto laiškas su instrukcijomis susieti {0} paskyrą {1} su {2} buvo nusiųstas.
+emailLinkIdp2=Negavote patvirtinimo kodo el. paštu?
+emailLinkIdp3=pakartotoinai siųsti el. laišką.
+
+backToLogin=&laquo; Grįžti į prisijungimo langą
+
+emailInstruction=Įveskite naudotojo vardą arba slaptažodį ir slaptažodžio pakeitimo instrukcijos bus atsiųstos Jums el. paštu 
+
+copyCodeInstruction=Nukopijuokite šį kodą į Jūsų programą:
+
+personalInfo=Asmeninė informacija:
+role_admin=Administratorius
+role_realm-admin=Srities administravimas
+role_create-realm=Kurti sritį
+role_create-client=Kurti programą
+role_view-realm=Peržiūrėti sritį
+role_view-users=Peržiūrėti naudotojus
+role_view-applications=Peržiūrėti programas
+role_view-clients=Peržiūrėti klientines programas
+role_view-events=Peržiūrėti įvykių žurnalą
+role_view-identity-providers=Peržiūrėti tapatybės teikėjus
+role_manage-realm=Valdyti sritis
+role_manage-users=Valdyti naudotojus
+role_manage-applications=Valdyti programas
+role_manage-identity-providers=Valdyti tapatybės teikėjus
+role_manage-clients=Valdyti programas
+role_manage-events=Valdyti įvykius
+role_view-profile=Peržiūrėti paskyrą
+role_manage-account=Valdyti paskyrą
+role_read-token=Skaityti prieigos rakšą
+role_offline-access=Darbas neprisijungus
+client_account=Paskyra
+client_security-admin-console=Saugumo administravimo konsolė
+client_admin-cli=Administravimo CLI
+client_realm-management=Srities valdymas
+client_broker=Tarpininkas
+
+invalidUserMessage=Neteisingas naudotojo vardas arba slaptažodis.
+invalidEmailMessage=Neteisingas el. pašto adresas.
+accountDisabledMessage=Paskyros galiojimas sustabdytas, kreipkitės į administratorių.
+accountTemporarilyDisabledMessage=Paskyros galiojimas laikinai sustabdytas. Kreipkitės į administratorių arba pabandykite vėliau.
+expiredCodeMessage=Prisijungimo laikas baigėsi. Bandykite dar kartą.
+
+missingFirstNameMessage=Prašome įvesti vardą.
+missingLastNameMessage=Prašome įvesti pavardę.
+missingEmailMessage=Prašome įvesti el. pašto adresą.
+missingUsernameMessage=Prašome įvesti naudotojo vardą.
+missingPasswordMessage=Prašome įvesti slaptažodį.
+missingTotpMessage=Prašome įvesti autentifikacijos kodą.
+notMatchPasswordMessage=Slaptažodžiai nesutampa.
+
+invalidPasswordExistingMessage=Neteisingas dabartinis slaptažodis.
+invalidPasswordConfirmMessage=Pakartotas slaptažodis nesutampa.
+invalidTotpMessage=Neteisingas autentifikacijos kodas.
+
+usernameExistsMessage=Toks naudotojas jau egzistuoja.
+emailExistsMessage=El. pašto adresas jau egzistuoja.
+
+federatedIdentityExistsMessage=Naudotojas {0} {1} jau egzistuoja. Prašome prsijungti prie naudotojų valdymo posistemės paskyrų susiejimui.
+
+confirmLinkIdpTitle=Paskyra jau egzistuoja
+federatedIdentityConfirmLinkMessage=Naudotojas {0} {1} jau egzistuoja. Ar tęsti?
+federatedIdentityConfirmReauthenticateMessage=Prisijunkite norėdami susieti paskyrą su  {0}
+confirmLinkIdpReviewProfile=Peržiūrėti naudotojo profilio informaciją
+confirmLinkIdpContinue=Susieti su egzistuojančia paskyra
+
+configureTotpMessage=Paskyros aktyvavimui Jums reikalingas Mobilus autentifikatorius.
+updateProfileMessage=Paskyros aktyvavimui Jums reikia atnaujinti profilio informaciją.
+updatePasswordMessage=Paskyros aktyvavimui Jums reikia pakeisti slaptažodį.
+verifyEmailMessage=Paskyros aktyvavimui Jums reikia patvirtinti el. pašto adresą.
+linkIdpMessage=El. pašto adreso susiejimui su Jūsu paskyra {0} reikalingas patvirtinimas.
+
+emailSentMessage=Netrukus turėtumėte gauti el. pašto adresą su instrukcijomis.
+emailSendErrorMessage=Klaida siunčiant el. paštą, bandykite vėliau.
+
+accountUpdatedMessage=Jųsų paskyros informacija atnaujinta.
+accountPasswordUpdatedMessage=Jūsų slaptažodis pakeistas.
+
+noAccessMessage=Prieiga negalima
+
+invalidPasswordMinLengthMessage=Neteisingas slaptažodis: privalomi bent {0} simboliai.
+invalidPasswordMinDigitsMessage=Neteisingas slaptažodis: privalomi bent {0} skaitmenys.
+invalidPasswordMinLowerCaseCharsMessage=Neteisingas slaptažodis: privalomos bent {0} mažosios raidės.
+invalidPasswordMinUpperCaseCharsMessage=Neteisingas slaptažodis: privalomos bent {0} didžiosios raidės.
+invalidPasswordMinSpecialCharsMessage=Neteisingas slaptažodis: privalomi bent {0} specialūs simboliai.
+invalidPasswordNotUsernameMessage=Neteisingas slaptažodis: negali sutapti su naudotojo vardu.
+invalidPasswordRegexPatternMessage=Neteisingas slaptažodis: neatitinka regexp taisyklės.
+invalidPasswordHistoryMessage=Neteisingas slaptažodis: negali sutapti su prieš tai naudotais {0} slaptažodžiais.
+
+failedToProcessResponseMessage=Klaida apdorojant atsakymą
+httpsRequiredMessage=Privalomas HTTPS
+realmNotEnabledMessage=Srities galiojimas išjungtas
+invalidRequestMessage=Neteisinga užklausa
+failedLogout=Nepavyko užbaigti sesijos
+unknownLoginRequesterMessage=Nežinomas prisijungimo prašytojas
+loginRequesterNotEnabledMessage=Prisijungimo prašytojo galiojimas išjungtas
+bearerOnlyMessage=Programos, sukonfigūruotos tik kaip perdavėjai, negali inicijuoti prisijungimą per naršyklę.
+standardFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per naršyklę šiam klientui negalimas. Šiam klientui neįgalinta standartinė seka.
+implicitFlowDisabledMessage=Su pateiktu atsakymo tipu prisijungimas per naršyklę šiam klientui negalimas. Šiam klientui neįgalinta išreikštinė seka.
+invalidRedirectUriMessage=Neteisinga nukreipimo nuoroda
+unsupportedNameIdFormatMessage=Nepalaikomas NameIDFormat
+invalidRequesterMessage=Neteisingas prašytojas
+registrationNotAllowedMessage=Registracija negalima
+resetCredentialNotAllowedMessage=Prisijungimo duomenų atkūrimas negalimas
+
+permissionNotApprovedMessage=Teisį nepatvirtinta.
+noRelayStateInResponseMessage=Tapatybės teikėjo atsakyme trūksta perdavimo būsenos.
+insufficientPermissionMessage=Trūksta teisių tapatybių susiejimui.
+couldNotProceedWithAuthenticationRequestMessage=Nepavyksta pradėti tapatybės teikėjo autentifikacijos užklausos.
+couldNotObtainTokenMessage=Negaunamas prieigos raktas iš tapatybės teikėjo.
+unexpectedErrorRetrievingTokenMessage=Prieigos rakšo gavimo iš tapatybės teikėjo metu įvyko netikėta klaida.
+unexpectedErrorHandlingResponseMessage=Tapatybės teikėjo atsakymo apdorojimo metu įvyko netikėta klaida.
+identityProviderAuthenticationFailedMessage=Autentifikacijos klaida. Nepavyksta autentifikacija su tapatybės teikėju.
+couldNotSendAuthenticationRequestMessage=Tapatybės teikėjui nepavyksta nusiųsti autentifikacijos užklausos.
+unexpectedErrorHandlingRequestMessage=Užklausos tapatybės teikėjui formavimo metu įvyko netikėta klaida.
+invalidAccessCodeMessage=Neteisingas prieigos kodas.
+sessionNotActiveMessage=Sesija neaktyvi.
+invalidCodeMessage=Įvyko klaida. Prašome bandyti prisijungti dar kartą.
+identityProviderUnexpectedErrorMessage=Autentifikavimo su išoriniu tapatybės teikėju metu įvyko netikėta klaida.
+identityProviderNotFoundMessage=Su nurodytu identifikatoriumi nerastas tapatybės teikėjas.
+identityProviderLinkSuccess=Jūsų naudotojo paskyra buvo sėkmingai susieta su {0} paskyra {1} .
+staleCodeMessage=Šis puslapis nebegalioja. Prašome grįžti į programą ir bandyti prisijungti iš naujo.
+realmSupportsNoCredentialsMessage=Sritis nepalaiko prisijungimų naudojant prisijungimo duomenis.
+identityProviderNotUniqueMessage=Sritis palaiko daugiau nei vieną tapatybės teikėją. Negalima nustatyti kuris tapatybės teikėjas turi būti naudojamas autentifikacijai.
+emailVerifiedMessage=Jūsų el. pašto adresas patvirtintas.
+staleEmailVerificationLink=Nuoroda, kurią paspaudėte nebegalioja? Galbūt Jūs jau patvirtinote el. pašto adresą?
+
+backToApplication=&laquo; Grįžti į programą
+missingParameterMessage=Nenurodytas parametras\: {0}
+clientNotFoundMessage=Nenurodytas klientas.
+clientDisabledMessage=Kliento galiojimas išjungtas.
+invalidParameterMessage=Neteisingas parametras\: {0}
+alreadyLoggedIn=Jūs jau esate prisijungę.
diff --git a/themes/custom-theme-template/login/messages/messages_lv.properties b/themes/custom-theme-template/login/messages/messages_lv.properties
new file mode 100644
index 0000000000000000000000000000000000000000..ee2ee204e8bbdaa64d6ca74b5671e0721078f66e
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_lv.properties
@@ -0,0 +1,231 @@
+doLogIn=Pieslēgties
+doRegister=Reģistrēties
+doRegisterSecurityKey=Reģistrēties
+doCancel=Atcelt
+doSubmit=Iesniegt
+doBack=Atpakaļ
+doYes=Jā
+doNo=Nē
+doContinue=Turpināt
+doIgnore=Ignorēt
+doAccept=Pieņemt
+doDecline=Atteikties
+doForgotPassword=Aizmirsāt paroli?
+doClickHere=Spiediet šeit
+doImpersonate=Uzdoties
+doTryAgain=Mēģināt vēlreiz
+doTryAnotherWay=Mēģināt citā veidā
+doConfirmDelete=Apstiprināt dzēšanu
+errorDeletingAccount=Kļūda dzēšot kontu
+deletingAccountForbidden=Jums nav piešķirtas atļaujas sava konta dzēšanai, sazinieties ar administratoru.
+kerberosNotConfigured=Kerberos nav konfigurēts
+kerberosNotConfiguredTitle=Kerberos nav konfigurēts
+bypassKerberosDetail=Jūs neesat pieslēdzies izmantojot Kerberos vai jūsu pārlūks nav iestatīts Kerberos autentifikācijai.  Spiediet turpināt, lai pieslēgtos citā veidā
+kerberosNotSetUp=Kerberos nav uzstādīts.  Jūs nevarat pieslēgties.
+registerTitle=Reģistrācija
+loginAccountTitle=Pieslēgties savam kontam
+loginTitle=Pieslēgties {0}
+loginTitleHtml={0}
+impersonateTitle={0} uzdoties par lietotāju
+impersonateTitleHtml=<strong>{0}</strong> uzdoties par lietotāju
+realmChoice=Realm
+unknownUser=Nezināms lietotājs
+loginTotpTitle=Mobilā autentifikatora uzstādīšana
+loginProfileTitle=Atjaunot profila informāciju
+loginIdpReviewProfileTitle=Atjaunot konta informācija
+loginTimeout=Jūs pārāk ilgi pieslēdzaties. Pieslēgšanās process tiks sākts no jauna.
+oauthGrantTitle=Piešķirt atļauju {0}
+oauthGrantTitleHtml={0}
+errorTitle=Notikusi kļūme...
+errorTitleHtml=Notikusi <strong>kļūme</strong> ...
+emailVerifyTitle=E-pasta apstiprināšana
+emailForgotTitle=Aizmirsāt paroli?
+updatePasswordTitle=Atjaunot paroli
+codeSuccessTitle=Kods
+codeErrorTitle=Kļūdas kods\: {0}
+displayUnsupported=Pieprasītais attēlošanas veids netiek atbalstīts
+browserRequired=Nepieciešama pieslēgšanās caur pārlūku
+browserContinue=Nepieciešama pieslēgšanās caur pārlūku, lai turpinātu autentifikāciju
+browserContinuePrompt=Vai atvērt pārlūku lai turpinātu pieslēgšanos? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Noteikumi un nosacījumi
+termsText=<p>Noteikumi un nosacījumi jānosaka</p>
+termsPlainText=Noteikumi un nosacījumi jānosaka
+
+recaptchaFailed=Nekorekts Recaptcha
+recaptchaNotConfigured=Recaptcha ir obligāts, bet nav uzstādīts
+consentDenied=Piekrišana liegta.
+
+noAccount=Jauns lietotājs?
+username=Lietotājvārds
+usernameOrEmail=Lietotājvārds vai e-pasts
+firstName=Vārds
+givenName=Vārds
+fullName=Pilns vārds
+lastName=Uzvārds
+familyName=Uzvārds
+email=E-pasts
+password=Parole
+passwordConfirm=Parole atkārtoti
+passwordNew=Jauna parole
+passwordNewConfirm=Jauna parole atkārtoti
+rememberMe=Atcerēties mani
+authenticatorCode=Vienreizējā parole
+address=Adrese
+street=Iela
+locality=Pilsēta
+region=Novads vai reģions
+postal_code=Pasta indegs
+country=Valsts
+emailVerified=E-pasts apstiprināts
+website=Tīmekļa vietne
+phoneNumber=Tālruņa numurs
+phoneNumberVerified=Tālruņa numurs apstiprināts
+gender=Dzimums
+birthday=Dzimšanas datums
+zoneinfo=Laika josla
+gssDelegationCredential=GSS delegācijas atslēga
+logoutOtherSessions=Atteikties no visām ierīcēm
+
+profileScopeConsentText=Lietotāja profils
+emailScopeConsentText=E-pasta adrese
+addressScopeConsentText=Adrese
+phoneScopeConsentText=Tālrunis
+offlineAccessScopeConsentText=Bezsaustes piekļuve
+samlRoleListScopeConsentText=Manas lomas
+rolesScopeConsentText=Lietotāju lomas
+
+restartLoginTooltip=Atkārtot pieslēgšanos
+
+
+emailVerifyInstruction1=E-pasts ar instrukcijām e-pasta apstiprināšanai ir nosūtīts
+emailVerifyInstruction2=Nesaņēmāt apsiptināšanas kodu savā e-pastā?
+emailVerifyInstruction3=lai atkārtoti nosūtītu e-pastu.
+
+emailLinkIdpTitle=Saistīt {0}
+emailLinkIdp1=E-pasts ar instrukcijām, lai saistītu {0} kontu {1} ar savu {2} kontu ir nosūtīts.
+emailLinkIdp2=Nesaņēmāt apsiptināšanas kodu savā e-pastā?
+emailLinkIdp3=lai atkārtoti nosūtītu e-pastu.
+emailLinkIdp4=Ja jūs jau apstiprinājāt e-pastu citā pārlūkā
+emailLinkIdp5=lai turpinātu.
+
+backToLogin=&laquo; Atpakaļ uz pieslēgšanos
+
+emailInstruction=Ievadiet lietotājvārdu vai e-pasta adresi un mēs nosūtīsim jums instrukcijas kā izveidot jaunu paroli.
+
+copyCodeInstruction=Lūdzu nokopējiet šo kodu un ielīmējiet savā lietojumprogrammā:
+
+pageExpiredTitle=Lapa ir beigusies
+pageExpiredMsg1=Lai atsāktu pieslēgšanās procesu
+pageExpiredMsg2=Lai turpinātu pieslēgšanās procesu
+
+personalInfo=Personiskā informācija:
+role_admin=Administrators
+role_realm-admin=Realm administrators
+role_create-realm=Izveidot realm
+role_view-realm=Skatīt realm
+role_view-users=Skatīt lietoājus
+role_view-applications=Skatīt lietojumprogrammas
+role_view-clients=Skatīt klientus
+role_view-events=Skatīt notikumus
+role_view-identity-providers=Skatīt identitātes sniedzējus
+role_manage-realm=Pārvaldīt realm
+role_manage-users=Pārvaldīt lietotājus
+role_manage-applications=Pārvaldīt lietojumprogrammas
+role_manage-identity-providers=Pārvaldīt identitātes sniedzējus
+role_manage-clients=Pārvaldīt klientus
+role_manage-events=Pārvaldīt notikumus
+role_view-profile=Skatīt profilu
+role_manage-account=Pārvaldīt kontu
+role_manage-account-links=Pārvaldīt konta saites
+role_read-token=Lasīt talonu (token)
+role_offline-access=Bezsaistes piekļuve
+role_uma_authorization=Iegūt atļaujas
+client_account=Konts
+client_security-admin-console=Drošības administrācijas konsole
+client_admin-cli=Administrācijas CLI
+client_realm-management=Realm pārvaldība
+client_broker=Brokeris
+
+invalidUserMessage=Nekorekts lietotājvārds vai parole.
+invalidEmailMessage=Nekorekta e-pasta adrese.
+accountDisabledMessage=Konts ir atspējots, sazinieties ar administratoru.
+accountTemporarilyDisabledMessage=Konts ir uz laiku atspējots, sazinieties ar administratoru vai mēģiniet vēlāk.
+expiredCodeMessage=Pieslēgšanās noilgums. Lūdzu pieslēdzieties atkārtoti.
+expiredActionMessage=Darbība noilgusi. Lūdzu turpiniet ar pieslēgšanos.
+expiredActionTokenNoSessionMessage=Darbība noilgusi.
+expiredActionTokenSessionExistsMessage=Darbība noilgusi. Lūdzu uzsāciet to no jauna.
+
+missingFirstNameMessage=Lūdzu norādi vārdu.
+missingLastNameMessage=Lūdzu norādi uzvārdu.
+missingEmailMessage=Lūdzu norādi e-pastu.
+missingUsernameMessage=Lūdzu norādi lietotājvārdu.
+missingPasswordMessage=Lūdzu norādi paroli.
+
+notMatchPasswordMessage=Paroles nesakrīt.
+
+invalidPasswordExistingMessage=Nekorekta pašreizējā parole.
+invalidPasswordBlacklistedMessage=Nekorekta parole: parole ir melnajā sarakstā.
+invalidPasswordConfirmMessage=Paroles apstiprinājums nav pareizs.
+
+usernameExistsMessage=Lietotājvārds jau eksistē.
+emailExistsMessage=E-pasts jau eksistē.
+
+federatedIdentityExistsMessage=Lietotājvārds ar {0} {1} jau eksistē. Lūdzu pieslēdzieties konta pārvaldniekam lai savienotu kontus.
+
+confirmLinkIdpTitle=Konts jau eksistē
+federatedIdentityConfirmLinkMessage=Konts ar {0} {1} jau eksistē. Kā vēlies turpināt?
+federatedIdentityConfirmReauthenticateMessage=Pieslēdzieties ar {0}, lai savienotu kontu ar {1}
+confirmLinkIdpReviewProfile=Pārskatīt profilu
+confirmLinkIdpContinue=Pievienot eksistējošam kontam
+
+accountUpdatedMessage=Jūsu konts ir atjaunots.
+accountPasswordUpdatedMessage=Jūsu parole ir atjaunota.
+
+delegationCompleteHeader=Pieslēgšanās veiksmīga
+delegationCompleteMessage=Jūs varat aizvērt šo pārlūka logu un doties atpakaļ uz konsoles lietojumprogrammu.
+delegationFailedHeader=Pieslēgšanās neizdevās
+delegationFailedMessage=Jūs varat aizvērt šo pārlūka logu un doties atpakaļ uz konsoles lietojumprogrammu un mēģināt pieslēgties atkārtoti.
+
+noAccessMessage=Nav piekļuves
+
+invalidPasswordMinLengthMessage=Nekorekta parole: minimālais paroles garums {0}.
+invalidPasswordMinDigitsMessage=Nekorekta parole: tai jāsatur vismaz {0} cipari.
+invalidPasswordMinLowerCaseCharsMessage=Nekorekta parole: tai jāsatur vismaz {0} mazie burti.
+invalidPasswordMinUpperCaseCharsMessage=Nekorekta parole: tai jāsatur vismaz {0} lielie burti.
+invalidPasswordMinSpecialCharsMessage=Nekorekta parole: tai jāsatur vismaz {0} speciālie simboli.
+invalidPasswordNotUsernameMessage=Nekorekta parole: tā nedrīkst sakrist ar lietotājvārdu.
+invalidPasswordRegexPatternMessage=Nekorekta parole: netabilst regex šablonam(iem).
+invalidPasswordHistoryMessage=Nekorekta parole: nedrīkst būt vienāda ar iepriekšējām {0} parolēm.
+invalidPasswordGenericMessage=Nekorekta parole: jaunā parole neatbilst paroles noteikumiem.
+
+backToApplication=&laquo; Atpakaļ uz lietojumprogrammu
+missingParameterMessage=Trūkst parametru\: {0}
+clientNotFoundMessage=Klients nav atrasts.
+clientDisabledMessage=Klients atspējos.
+invalidParameterMessage=Nekorekts parametrs\: {0}
+alreadyLoggedIn=Tu jau esi pieslēdzies.
+differentUserAuthenticated=Jūs jau esat pieslēdzies ar citu lietotāju ''{0}'' šajā sesijā. Lūdzu vispirms atslēgties.
+proceedWithAction=» Spiediet šeit lai turpinātu
+
+requiredAction.CONFIGURE_TOTP=Konfigurēt OTP
+requiredAction.TERMS_AND_CONDITIONS=Noteikumi un nosacījumi
+requiredAction.UPDATE_PASSWORD=Atjaunot paroli
+requiredAction.UPDATE_PROFILE=Atjaunot profilu
+requiredAction.VERIFY_EMAIL=Apstiprināt e-pastu
+
+pageNotFound=Lapa nav atrasta
+internalServerError=Notikusi servera kļūme
+
+console-username=Lietotājvārds:
+console-password=Parole:
+console-otp=Vienreizējā parole:
+console-new-password=Jauna parole:
+console-confirm-password=Parole atkārtoti:
+console-update-password=Jums ir jāatjauno parole.
+console-verify-email=Jums ir jāapstiprina e-pasta adrese. E-pasts tika nosūtīts uz {0}, kas satur apstiprinājuma kodu. Lūdzu ievadiet šo kodu ievadlaukā zemāk.
+console-email-code=E-pasta kods:
+console-accept-terms=Piekrist noteikumiem? [y/n]:
+console-accept=y
diff --git a/themes/custom-theme-template/login/messages/messages_nl.properties b/themes/custom-theme-template/login/messages/messages_nl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..fbe373de262e9b45821f253e9cea95b3bd39919d
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_nl.properties
@@ -0,0 +1,311 @@
+doLogIn=Inloggen
+doRegister=Registreer
+doRegisterSecurityKey=Registreer
+doCancel=Annuleer
+doSubmit=Verzenden
+doBack=Terug
+doYes=Ja
+doNo=Nee
+doContinue=Doorgaan
+doIgnore=Negeer
+doAccept=Accepteren
+doDecline=Afwijzen
+doForgotPassword=Wachtwoord vergeten?
+doClickHere=Klik hier
+doImpersonate=Identiteit overnemen
+doTryAgain=Probeer opnieuw
+doTryAnotherWay=Probeer op een ander manier
+doConfirmDelete=Bevestig verwijderen
+errorDeletingAccount=Onverwachte fout bij het verwijderen van account
+deletingAccountForbidden=U heeft onvoldoende rechten om dit account te verwijderen, neem contact op met beheer.
+kerberosNotConfigured=Kerberos is niet geconfigureerd
+kerberosNotConfiguredTitle=Kerberos is niet geconfigureerd
+bypassKerberosDetail=U bent niet ingelogd via Kerberos of uw browser kan niet met Kerberos inloggen. Klik op 'doorgaan' om via een andere manier in te loggen
+kerberosNotSetUp=Kerberos is onjuist geconfigureerd. U kunt niet inloggen.
+registerTitle=Registreer
+loginAccountTitle=Inloggen met uw account
+loginTitle=Log in met {0}
+loginTitleHtml={0}
+impersonateTitle={0} Identiteit overnemen
+impersonateTitleHtml=<strong>{0}</strong> Identiteit overnemen
+realmChoice=Realm
+unknownUser=Onbekende gebruiker
+loginTotpTitle=Mobiele Authenticator Instellen
+loginProfileTitle=Update accountinformatie
+loginTimeout=U bent te lang bezig geweest met inloggen. Het inlogproces begint opnieuw.
+reauthenticate=Log opnieuw in om verder te gaan
+oauthGrantTitle=Verleen Toegang
+oauthGrantTitleHtml={0}
+errorTitle=Er is een fout opgetreden...
+errorTitleHtml=Er is een fout opgetreden...
+emailVerifyTitle=E-mailadres-verificatie
+emailForgotTitle=Wachtwoord vergeten?
+updatePasswordTitle=Wachtwoord updaten
+codeSuccessTitle=Succescode
+codeErrorTitle=Foutcode: {0}
+displayUnsupported=Opgevraagde weergave type is niet ondersteund
+browserRequired=Om in te loggen is een browser vereist
+browserContinue=Om het loginproces af te ronden is een browser vereist
+browserContinuePrompt=Open een browser en ga door met inloggen? [y/n]:
+browserContinueAnswer=y
+
+
+termsTitle=Voorwaarden
+termsText=<p>Gedefinieerde voorwaarden</p>
+termsPlainText=Voorwaarden
+
+recaptchaFailed=Ongeldige Recaptcha
+recaptchaNotConfigured=Recaptcha is verplicht, maar niet geconfigureerd
+consentDenied=Toestemming geweigerd.
+
+noAccount=Nieuwe gebruiker?
+username=Gebruikersnaam
+usernameOrEmail=Gebruikersnaam of e-mailadres
+firstName=Voornaam
+givenName=Voornaam
+fullName=Volledige naam
+lastName=Achternaam
+familyName=Familienaam
+email=E-mailadres
+password=Wachtwoord
+passwordConfirm=Bevestig wachtwoord
+passwordNew=Nieuw wachtwoord
+passwordNewConfirm=Bevestiging nieuwe wachtwoord
+rememberMe=Ingelogd blijven
+authenticatorCode=Authenticatiecode
+address=Adres
+street=Straat
+locality=Woonplaats
+region=Provincie of regio
+postal_code=Postcode
+country=Land
+emailVerified=E-mailadres geverifieerd
+gssDelegationCredential=GSS delegatie Credential
+
+profileScopeConsentText=Gebruikersprofiel
+emailScopeConsentText=E-mailadres
+addressScopeConsentText=Adres
+phoneScopeConsentText=Telefoonnummer
+offlineAccessScopeConsentText=Offline toegang
+samlRoleListScopeConsentText=Mijn rollen
+rolesScopeConsentText=Gebruikersrollen
+
+loginTotpIntro=U bent verplicht om tweefactor-authenticatie in te stellen om dit account te kunnen gebruiken
+loginTotpStep1=Installeer een van de volgende applicaties op uw mobile telefoon
+loginTotpStep2=Open de applicatie en scan de barcode
+loginTotpStep3=Voer de eenmalige code die door de applicatie is aangeleverd in en klik op 'Verzenden' om de setup te voltooien
+loginTotpManualStep2=Open de applicatie en voer de sleutel in
+loginTotpManualStep3=Gebruik de volgende configuratiewaarden (als de applicatie dit ondersteund)
+loginTotpUnableToScan=Lukt het scannen niet?
+loginTotpScanBarcode=Scan barcode?
+loginOtpOneTime=Eenmalige code
+loginTotpType=Type
+loginTotpAlgorithm=Algoritme
+loginTotpDigits=Cijfers
+loginTotpInterval=Interval
+loginTotpCounter=Teller
+loginTotpDeviceName=Apparaatnaam
+
+loginTotp.totp=Time-based
+loginTotp.hotp=Counter-based
+
+
+oauthGrantRequest=Wilt u deze toegangsrechten verlenen?
+inResource=in
+
+emailVerifyInstruction1=Een e-mail met instructies om uw e-mailadres te verifiëren is zojuist verzonden.
+emailVerifyInstruction2=Heeft u geen verificatiecode ontvangen in uw e-mail?
+emailVerifyInstruction3=om opnieuw een e-mail te versturen.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=Er is een e-mail met instructies verzonden om {0} account {1} te koppelen met uw {2} account.
+emailLinkIdp2=Heeft u geen verificatiecode in uw e-mail ontvangen?
+emailLinkIdp3=om opnieuw een e-mail te versturen.
+emailLinkIdp4=Als u deze mail al geverifieerd hebt in een andere browser
+emailLinkIdp5=om door te gaan.
+
+backToLogin=&laquo; Terug naar Inloggen
+
+emailInstruction=Voer uw gebruikersnaam of e-mailadres in en wij sturen u een e-mailbericht met instructies voor het aanmaken van een nieuw wachtwoord.
+
+copyCodeInstruction=Kopieer deze code en plak deze in uw applicatie:
+
+pageExpiredTitle=Sessie is verlopen
+pageExpiredMsg1=Om het loginproces opnieuw te doen
+pageExpiredMsg2=Om door te gaan met het loginproces
+
+personalInfo=Persoonlijke informatie:
+role_admin=Admin
+role_realm-admin=Realm beheren
+role_create-realm=Realm aanmaken
+role_create-client=Client aanmaken
+role_view-realm=Bekijk realm
+role_view-users=Bekijk gebruikers
+role_view-applications=Bekijk applicaties
+role_view-clients=Bekijk clients
+role_view-events=Bekijk gebeurtenissen
+role_view-identity-providers=Bekijk identity providers
+role_manage-realm=Beheer realm
+role_manage-users=Gebruikers beheren
+role_manage-applications=Beheer applicaties
+role_manage-identity-providers=Beheer identity providers
+role_manage-clients=Beheer clients
+role_manage-events=Beheer gebeurtenissen
+role_view-profile=Profiel bekijken
+role_manage-account=Beheer account
+role_manage-account-links=Beheer accountlinks
+role_read-token=Token lezen
+role_offline-access=Offline toegang
+client_account=Account
+client_security-admin-console=Security Admin Console
+client_admin-cli=Admin CLI
+client_realm-management=Realm-beheer
+client_broker=Broker
+
+invalidUserMessage=Ongeldige gebruikersnaam of wachtwoord.
+invalidEmailMessage=Ongeldig e-mailadres.
+accountDisabledMessage=Account is uitgeschakeld, neem contact op met beheer.
+accountTemporarilyDisabledMessage=Account is tijdelijk uitgeschakeld, neem contact op met beheer of probeer het later opnieuw.
+expiredCodeMessage=Logintijd verlopen. Gelieve opnieuw in te loggen.
+expiredActionMessage=Actietijd verlopen. Log daarom opnieuw in.
+expiredActionTokenNoSessionMessage=Actietijd verlopen.
+expiredActionTokenSessionExistsMessage=Actietijd verlopen. Gelieve de actie opnieuw doen.
+
+missingFirstNameMessage=Voer uw voornaam in.
+missingLastNameMessage=Voer uw achternaam in.
+missingEmailMessage=Voer uw e-mailadres in.
+missingUsernameMessage=Voer uw gebruikersnaam in.
+missingPasswordMessage=Voer uw wachtwoord in.
+missingTotpMessage=Voer uw authenticatiecode in.
+notMatchPasswordMessage=Wachtwoorden komen niet overeen.
+
+invalidPasswordExistingMessage=Ongeldig bestaand wachtwoord.
+invalidPasswordBlacklistedMessage=Ongeldig wachtwoord: wachtwoord is geblacklist.
+invalidPasswordConfirmMessage=Wachtwoord komt niet overeen met wachtwoordbevestiging.
+invalidTotpMessage=Ongeldige authenticatiecode.
+
+usernameExistsMessage=Gebruikersnaam bestaat al.
+emailExistsMessage=E-mailadres bestaat al.
+
+federatedIdentityExistsMessage=Gebruiker met {0} {1} bestaat al. Log in met het beheerdersaccount om het account te koppelen.
+
+confirmLinkIdpTitle=Account bestaat al
+federatedIdentityConfirmLinkMessage=Gebruiker met {0} {1} bestaat al. Hoe wilt u doorgaan?
+federatedIdentityConfirmReauthenticateMessage=Authenticeer om uw account te koppelen {0}
+confirmLinkIdpReviewProfile=Nalopen profiel
+confirmLinkIdpContinue=Voeg toe aan bestaande account
+
+configureTotpMessage=U moet de Mobile Authenticator configuren om uw account te activeren.
+updateProfileMessage=U moet uw gebruikersprofiel bijwerken om uw account te activeren.
+updatePasswordMessage=U moet uw wachtwoord wijzigen om uw account te activeren.
+resetPasswordMessage=U moet uw wachtwoord wijzigen.
+verifyEmailMessage=U moet uw e-mailadres verifiëren om uw account te activeren.
+linkIdpMessage=U moet uw e-mailadres verifiëren om uw account te koppelen aan {0}.
+
+emailSentMessage=U ontvangt binnenkort een e-mail met verdere instructies.
+emailSendErrorMessage=Het versturen van de e-mail is mislukt, probeer het later opnieuw.
+
+accountUpdatedMessage=Uw account is gewijzigd.
+accountPasswordUpdatedMessage=Uw wachtwoord is gewijzigd.
+
+delegationCompleteHeader=Login gelukt
+delegationCompleteMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie
+delegationFailedHeader=Login mislukt
+delegationFailedMessage=U mag uw browser sluiten en terug gaan naar uw console applicatie om daar het loginproces nogmaalt te proberen.
+
+noAccessMessage=Geen toegang
+
+invalidPasswordMinLengthMessage=Ongeldig wachtwoord, de minimumlengte is {0} karakters.
+invalidPasswordMinDigitsMessage=Ongeldig wachtwoord, deze moet minstens {0} cijfers bevatten.
+invalidPasswordMinLowerCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} kleine letters bevatten.
+invalidPasswordMinUpperCaseCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} hoofdletters bevatten.
+invalidPasswordMinSpecialCharsMessage=Ongeldig wachtwoord, deze moet minstens {0} speciale tekens bevatten.
+invalidPasswordNotUsernameMessage=Ongeldig wachtwoord, deze mag niet overeen komen met de gebruikersnaam.
+invalidPasswordRegexPatternMessage=Ongeldig wachtwoord, deze komt niet overeen met opgegeven reguliere expressie(s).
+invalidPasswordHistoryMessage=Ongeldig wachtwoord, deze mag niet overeen komen met een van de laatste {0} wachtwoorden.
+invalidPasswordGenericMessage=Ongeldig wachtwoord: het nieuwe wachtwoord voldoet niet aan de opgestelde eisen.
+
+failedToProcessResponseMessage=Het verwerken van de respons is mislukt
+httpsRequiredMessage=HTTPS vereist
+realmNotEnabledMessage=Realm niet geactiveerd
+invalidRequestMessage=Ongeldige request
+failedLogout=Afmelden is mislukt
+unknownLoginRequesterMessage=De login requester is onbekend
+loginRequesterNotEnabledMessage=De login requester is niet geactiveerd
+bearerOnlyMessage=Bearer-only applicaties mogen geen browserlogin initiëren
+standardFlowDisabledMessage=Client mag geen browserlogin starten met het opgegeven response_type. Standard flow is uitgeschakeld voor de client.
+implicitFlowDisabledMessage=Client mag geen browserlogin starten met opgegeven response_type. Implicit flow is uitgeschakeld voor de klant.
+invalidRedirectUriMessage=Ongeldige redirect-URI
+unsupportedNameIdFormatMessage=Niet-ondersteunde NameIDFormat
+invalidRequesterMessage=Ongeldige requester
+registrationNotAllowedMessage=Registratie is niet toegestaan
+resetCredentialNotAllowedMessage=Het opnieuw instellen van de aanmeldgegevens is niet toegestaan
+
+permissionNotApprovedMessage=Recht verworpen.
+noRelayStateInResponseMessage=Geen relay state in antwoord van de identity provider.
+insufficientPermissionMessage=Onvoldoende rechten om identiteiten te koppelen.
+couldNotProceedWithAuthenticationRequestMessage=Het authenticatieverzoek naar de identity provider wordt afgebroken.
+couldNotObtainTokenMessage=Kon geen token bemachtigen van de identity provider.
+unexpectedErrorRetrievingTokenMessage=Onverwachte fout bij het ophalen van de token van de identity provider.
+unexpectedErrorHandlingResponseMessage=Onverwachte fout bij het verwerken van de respons van de identity provider.
+identityProviderAuthenticationFailedMessage=Verificatie mislukt. Er kon niet worden geauthenticeerd met de identity provider.
+couldNotSendAuthenticationRequestMessage=Kan het authenticatieverzoek niet verzenden naar de identity provider.
+unexpectedErrorHandlingRequestMessage=Onverwachte fout bij het verwerken van het authenticatieverzoek naar de identity provider.
+invalidAccessCodeMessage=Ongeldige toegangscode.
+sessionNotActiveMessage=Sessie inactief.
+invalidCodeMessage=Er is een fout opgetreden, probeer nogmaals in te loggen.
+identityProviderUnexpectedErrorMessage=Onverwachte fout tijdens de authenticatie met de identity provider
+identityProviderNotFoundMessage=Geen identity provider gevonden met deze naam.
+identityProviderLinkSuccess=Uw account is met succes gekoppeld aan {0} account {1}.
+staleCodeMessage=Deze pagina is verlopen. Keer terug naar uw applicatie om opnieuw in te loggen.
+realmSupportsNoCredentialsMessage=Realm ondersteunt geen enkel soort aanmeldgegeven.
+identityProviderNotUniqueMessage=Realm ondersteunt meerdere identity providers. Er kon niet bepaald worden welke identity provider er gebruikt zou moeten worden tijdens de authenticatie.
+emailVerifiedMessage=Uw e-mailadres is geverifieerd.
+staleEmailVerificationLink=De link die u gebruikt is verlopen, wellicht omdat u uw e-mailadres al eerder geverifieerd heeft.
+identityProviderAlreadyLinkedMessage=De door {0} teruggegeven gefedereerde identiteit is al aan een andere gebruiker gekoppeld.
+confirmAccountLinking=Bevestig dat het account {0} van identity provider {1} overeenkomt met uw account.
+confirmEmailAddressVerification=Bevestig dat e-mailadres {0} valide is.
+confirmExecutionOfActions=Voer de volgende actie(s) uit
+
+backToApplication=&laquo; Terug naar de applicatie
+missingParameterMessage=Missende parameters: {0}
+clientNotFoundMessage=Client niet gevonden.
+clientDisabledMessage=Client is inactief.
+invalidParameterMessage=Ongeldige parameter: {0}
+alreadyLoggedIn=U bent al ingelogd.
+differentUserAuthenticated=U bent in deze sessie al als de gebruiker "{0}" aangemeld. Log eerst uit.
+brokerLinkingSessionExpired=Broker account linking aangevraagd, maar de huidige sessie in verlopen.
+proceedWithAction=&raquo; Klik hier om verder te gaan
+
+requiredAction.CONFIGURE_TOTP=Configureer OTP
+requiredAction.TERMS_AND_CONDITIONS=Voorwaarden
+requiredAction.UPDATE_PASSWORD=Update wachtwoord
+requiredAction.UPDATE_PROFILE=Update profiel
+requiredAction.VERIFY_EMAIL=Verifieer e-mail
+
+doX509Login=U wordt ingelogd als\:
+clientCertificate=X509 client certificate\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=Pagina niet gevonden
+internalServerError=Er is een interne serverfout opgetreden
+
+console-username=Gebruikersnaam:
+console-password=Wachtwoord:
+console-otp=Eenmalige code:
+console-new-password=Nieuw wachtwoord:
+console-confirm-password=Bevestig wachtwoord:
+console-update-password=Een update van uw wachtwoord is verplicht.
+console-verify-email=U bent verplicht om uw e-mailadres te verifiëren. Een e-mail met de verificatiecode is naar {0} gestuurd. Voer deze code hieronder in.
+console-email-code=E-mail Code:
+console-accept-terms=Accepteert u de voorwaarden? [y/n]:
+console-accept=y
+
+# Identity provider
+identity-provider-redirector=Gebruik een andere Identity Provider
+identity-provider-login-label=Of login met
+idp-email-verification-display-name=E-mail Verificatie
+idp-email-verification-help-text=Bevestig uw account per e-mail.
+idp-username-password-form-display-name=Gebruikersnaam en wachtwoord
+idp-username-password-form-help-text=Bevestig uw account door in te loggen.
diff --git a/themes/custom-theme-template/login/messages/messages_no.properties b/themes/custom-theme-template/login/messages/messages_no.properties
new file mode 100644
index 0000000000000000000000000000000000000000..eac756687378e4227d72c03d35833e8104eb433e
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_no.properties
@@ -0,0 +1,215 @@
+doLogIn=Logg inn
+doRegister=Registrer deg
+doRegisterSecurityKey=Registrer deg
+doCancel=Avbryt
+doSubmit=Send inn
+doYes=Ja
+doNo=Nei
+doContinue=Fortsett
+doAccept=Aksepter
+doDecline=Avslå
+doForgotPassword=Glemt passord?
+doClickHere=Klikk her
+doImpersonate=Utgi deg for å være en annen bruker
+kerberosNotConfigured=Kerberos er ikke konfigurert
+kerberosNotConfiguredTitle=Kerberos er ikke konfigurert
+bypassKerberosDetail=Enten er du ikke logget inn via Kerberos eller så støtter ikke nettleseren innlogging med Kerberos. Vennligst klikk Fortsett for å logge inn på andre måter
+kerberosNotSetUp=Kerberos er ikke konfigurert. Du kan ikke logge inn.
+registerWithTitle=Registrer deg med {0}
+registerWithTitleHtml={0}
+loginTitle=Logg inn på {0}
+loginTitleHtml={0}
+impersonateTitle={0} Gi deg ut for å være en annen bruker
+impersonateTitleHtml=<strong>{0}</strong> Gi deg ut for å være en annen bruker
+realmChoice=Sikkerhetsdomene
+unknownUser=Ukjent bruker
+loginTotpTitle=Konfigurer autentifikator for mobil
+loginProfileTitle=Oppdater konto
+loginTimeout=Du brukte for lang tid på å logge inn. Vennligst prøv igjen.
+oauthGrantTitle=Gi tilgang
+oauthGrantTitleHtml={0}
+errorTitle=Vi beklager...
+errorTitleHtml=Vi <strong>beklager</strong> ...
+emailVerifyTitle=E-postbekreftelse
+emailForgotTitle=Glemt passord?
+updatePasswordTitle=Oppdater passord
+codeSuccessTitle=Suksesskode
+codeErrorTitle=Feilkode\: {0}
+
+termsTitle=Vilkår og betingelser
+termsTitleHtml=Vilkår og betingelser
+termsText=<p>Vilkår og betingelser kommer</p>
+
+recaptchaFailed=Ugyldig Bildebekreftelse
+recaptchaNotConfigured=Bildebekreftelse er påkrevet, men er ikke konfigurert
+consentDenied=Samtykke avslått.
+
+noAccount=Ny bruker?
+username=Brukernavn
+usernameOrEmail=Brukernavn eller e-postadresse
+firstName=Fornavn
+givenName=Fornavn
+fullName=Fullstendig navn
+lastName=Etternavn
+familyName=Etternavn
+email=E-postadresse
+password=Passord
+passwordConfirm=Bekreft passord
+passwordNew=Nytt passord
+passwordNewConfirm=Bekreft nytt Passord
+rememberMe=Husk meg
+authenticatorCode=Engangskode
+address=Adresse
+street=Gate-/veinavn + husnummer
+locality=By
+region=Fylke
+postal_code=Postnummer
+country=Land
+emailVerified=E-postadresse bekreftet
+gssDelegationCredential=GSS legitimasjons-delegering
+
+loginTotpStep1=Installer <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> eller Google Authenticator på din mobiltelefon. Begge applikasjoner er tilgjengelige på <a href="https://play.google.com">Google Play</a> og Apple App Store.
+loginTotpStep2=Åpne applikasjonen og skann strekkoden eller skriv inn koden
+loginTotpStep3=Skriv inn engangskoden fra applikasjonen og klikk send inn for å fullføre
+loginOtpOneTime=Engangskode
+
+oauthGrantRequest=Vil du gi disse tilgangsrettighetene?
+inResource=i
+
+emailVerifyInstruction1=En e-post med instruksjoner for å bekrefte din e-postadresse har blitt sendt til deg.
+emailVerifyInstruction2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
+emailVerifyInstruction3=for å sende e-post på nytt.
+
+emailLinkIdpTitle=Lenke {0}
+emailLinkIdp1=En e-post med instruksjoner for å koble {0} konto med din {2} konto har blitt sendt til deg.
+emailLinkIdp2=Ikke mottatt en bekreftelseskode i e-posten vi sendte til deg?
+emailLinkIdp3=for å sende e-post på nytt.
+
+backToLogin=&laquo; Tilbake til innlogging
+emailInstruction=Skriv inn e-postadressen din og vi vil sende deg instruksjoner for hvordan du oppretter et nytt passord.
+
+copyCodeInstruction=Vennligst kopier denne koden og lim den inn i applikasjonen din:
+
+personalInfo=Personlig informasjon:
+role_admin=Administrator
+role_realm-admin=Administrator for sikkerhetsdomene
+role_create-realm=Opprette sikkerhetsdomene
+role_create-client=Opprette klient
+role_view-realm=Se sikkerhetsdomene
+role_view-users=Se brukere
+role_view-applications=Se applikasjoner
+role_view-clients=Se klienter
+role_view-events=Se hendelser
+role_view-identity-providers=Se identitetsleverandører
+role_manage-realm=Administrere sikkerhetsdomene
+role_manage-users=Administrere brukere
+role_manage-applications=Administrere applikasjoner
+role_manage-identity-providers=Administrere identitetsleverandører
+role_manage-clients=Administrere klienter
+role_manage-events=Administrere hendelser
+role_view-profile=Se profil
+role_manage-account=Administrere konto
+role_read-token=Lese token
+role_offline-access=Frakoblet tilgang
+role_uma_authorization=Skaffe tillatelser
+client_account=Konto
+client_security-admin-console=Sikkerthetsadministrasjonskonsoll
+client_realm-management=Sikkerhetsdomene-administrasjon
+client_broker=Broker
+
+invalidUserMessage=Ugyldig brukernavn eller passord.
+invalidEmailMessage=Ugyldig e-postadresse.
+accountDisabledMessage=Konto er deaktivert, kontakt administrator.
+accountTemporarilyDisabledMessage=Konto er midlertidig deaktivert, kontakt administrator eller prøv på nytt senere.
+expiredCodeMessage=Login ble tidsavbrutt. Vennligst logg inn på nytt.
+
+missingFirstNameMessage=Vennligst oppgi fornavn.
+missingLastNameMessage=Vennligst oppgi etternavn.
+missingEmailMessage=Vennligst oppgi e-postadresse.
+missingUsernameMessage=Vennligst oppgi brukernavn.
+missingPasswordMessage=Vennligst oppgi passord.
+missingTotpMessage=Vennligst oppgi autentiseringskode.
+notMatchPasswordMessage=Passordene er ikke like.
+
+invalidPasswordExistingMessage=Ugyldig eksisterende passord.
+invalidPasswordConfirmMessage=Passord er ikke like.
+invalidTotpMessage=Ugyldig engangskode.
+
+usernameExistsMessage=Brukernavnet finnes allerede.
+emailExistsMessage=E-post finnes allerede.
+
+federatedIdentityExistsMessage=Bruker med {0} {1} finnes allerede. Vennligst logg inn på kontoadministratsjon for å koble sammen kontoene.
+
+confirmLinkIdpTitle=Kontoen finnes allerede
+federatedIdentityConfirmLinkMessage=Bruker med {0} {1} finnes allerede. Hvordan vil du fortsette?
+#federatedIdentityConfirmReauthenticateMessage=Bekreft at du er {0} for å koble din konto med {1}
+confirmLinkIdpReviewProfile=Se over og bekreft profil
+confirmLinkIdpContinue=Legg til eksisterende konto
+
+configureTotpMessage=Du må sette opp en engangskode-generator for å aktivere konto.
+updateProfileMessage=Du må oppdatere brukerprofilen din for å aktivere konto.
+updatePasswordMessage=Du må skifte passord for å aktivere kontoen din.
+verifyEmailMessage=Du må bekrefte e-postadressen din for å aktivere konto.
+linkIdpMessage=You need to verify your email address to link your account with {0}.
+
+emailSentMessage=Du vil straks motta en e-post med ytterlige instruksjoner.
+emailSendErrorMessage=Mislyktes å sende e-post, vennligst prøv igjen senere.
+
+accountUpdatedMessage=Din konto har blitt oppdatert.
+accountPasswordUpdatedMessage=Ditt passord har blitt oppdatert.
+
+noAccessMessage=Ingen tilgang
+
+invalidPasswordMinLengthMessage=Ugyldig passord: minimum lengde {0}.
+invalidPasswordMinDigitsMessage=Ugyldig passord: må inneholde minimum {0} sifre.
+invalidPasswordMinLowerCaseCharsMessage=Ugyldig passord: må inneholde minimum {0} små bokstaver.
+invalidPasswordMinUpperCaseCharsMessage=Ugyldig passord: må inneholde minimum {0} store bokstaver.
+invalidPasswordMinSpecialCharsMessage=Ugyldig passord: må inneholde minimum {0} spesialtegn.
+invalidPasswordNotUsernameMessage=Ugyldig passord: kan ikke være likt brukernavn.
+invalidPasswordRegexPatternMessage=Ugyldig passord: tilfredsstiller ikke kravene for passord-mønster.
+invalidPasswordHistoryMessage=Ugyldig passord: kan ikke være likt noen av de {0} foregående passordene.
+
+failedToProcessResponseMessage=Kunne ikke behandle svar
+httpsRequiredMessage=HTTPS påkrevd
+realmNotEnabledMessage=Sikkerhetsdomene er ikke aktivert
+invalidRequestMessage=Ugyldig forespørsel
+failedLogout=Utlogging feilet
+unknownLoginRequesterMessage=Ukjent anmoder for innlogging
+loginRequesterNotEnabledMessage=Anmoder for innlogging er ikke aktivert
+bearerOnlyMessage=Bearer-only applikasjoner har ikke lov til å initiere innlogging via nettleser
+standardFlowDisabledMessage=Klienten har ikke lov til å initiere innlogging via nettleser med gitt response_type. Standard flow er deaktivert for denne klienten.
+implicitFlowDisabledMessage=Klienten har ikke lov til å initiere innlogging via nettleser med gitt response_type. Implicit flow er deaktivert for denne klienten.
+invalidRedirectUriMessage=Ugyldig redirect uri
+unsupportedNameIdFormatMessage=NameIDFormat er ikke støttet
+invalidRequesterMessage=Ugyldig sender av forespørsel
+registrationNotAllowedMessage=Registrering er ikke lov
+resetCredentialNotAllowedMessage=Tilbakestilling av innloggingsdata er ikke lov
+
+permissionNotApprovedMessage=Tillatelse ikke godkjent.
+noRelayStateInResponseMessage=Ingen relay state i svar fra identitetsleverandør.
+insufficientPermissionMessage=Utilstrekkelige rettigheter for å koble identiteter.
+couldNotProceedWithAuthenticationRequestMessage=Kunne ikke gå videre med autentiseringsforespørsel til identitetsleverandør.
+couldNotObtainTokenMessage=Klarte ikke å innhente token fra identitetsleverandør.
+unexpectedErrorRetrievingTokenMessage=Uventet feil ved henting av token fra identitetsleverandør.
+unexpectedErrorHandlingResponseMessage=Uventet feil ved håndtering av svar fra identitetsleverandør.
+identityProviderAuthenticationFailedMessage=Autentisering feilet. Kunne ikke autentisere med identitetsleverandør.
+couldNotSendAuthenticationRequestMessage=Kunne ikke sende autentiseringsforespørsel til identitetsleverandør.
+unexpectedErrorHandlingRequestMessage=Uventet feil ved håndtering av autentiseringsforespørsel til identitetsleverandør.
+invalidAccessCodeMessage=Ugyldig tilgangskode.
+sessionNotActiveMessage=Sesjonen er ikke aktiv.
+invalidCodeMessage=En feil oppstod, vennligst logg inn på nytt i din applikasjon.
+identityProviderUnexpectedErrorMessage=Uventet feil ved autentisering med identitetsleverandør
+identityProviderNotFoundMessage=Kunne ikke finne en identitetsleverandør med identifikatoren.
+identityProviderLinkSuccess=Din konto ble suksessfullt koblet med {0} konto {1}.
+staleCodeMessage=Denne siden er ikke lenger gyldig. Vennligst gå tilbake til applikasjonen din og logg inn på nytt.
+realmSupportsNoCredentialsMessage=Sikkerhetsdomene støtter ingen legitimasjonstyper.
+identityProviderNotUniqueMessage=Sikkerhetsdomene støtter flere identitetsleverandører. Kunne ikke avgjøre hvilken identitetsleverandør som burde brukes for autentisering.
+emailVerifiedMessage=Din e-postadresse har blitt verifisert.
+staleEmailVerificationLink=Lenken du klikket er utgått og er ikke lenger gyldig. Har du kanskje allerede bekreftet e-postadressen din?
+
+backToApplication=&laquo; Tilbake til applikasjonen
+missingParameterMessage=Manglende parameter\: {0}
+clientNotFoundMessage=Klient ikke funnet.
+clientDisabledMessage=Klient deaktivert.
+invalidParameterMessage=Ugyldig parameter\: {0}
+alreadyLoggedIn=Du er allerede innlogget.
diff --git a/themes/custom-theme-template/login/messages/messages_pl.properties b/themes/custom-theme-template/login/messages/messages_pl.properties
new file mode 100644
index 0000000000000000000000000000000000000000..88c8f2c41bc4eb90ca251d9b810afaac0eede227
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_pl.properties
@@ -0,0 +1,319 @@
+doLogIn=Logowanie
+doRegister=Rejestracja
+doRegisterSecurityKey=Rejestracja
+doCancel=Anuluj
+doSubmit=Zatwierdź
+doBack=Cofnij
+doYes=Tak
+doNo=Nie
+doContinue=Kontynuuj
+doIgnore=Ignoruj
+doAccept=Akceptuj
+doDecline=Odrzuć
+doForgotPassword=Nie pamiętasz hasła?
+doClickHere=Kliknij tutaj
+doImpersonate=Wciel się
+doTryAgain=Spróbuj ponownie
+doTryAnotherWay=Spróbuj inną metodą
+kerberosNotConfigured=Kerberos nie jest skonfigurowany
+kerberosNotConfiguredTitle=Kerberos nie jest skonfigurowany
+bypassKerberosDetail=Albo nie jesteś zalogowany przez Kerberos albo twoja przeglądarka nie jest skonfigurowana do logowania Kerberos. Kliknij kontynuuj by zalogować się w inny sposób.
+kerberosNotSetUp=Kerberos nie jest skonfigurowany. Nie można się zalogować.
+registerTitle=Rejestracja
+loginAccountTitle=Zaloguj się na swoje konto
+loginTitle=Zaloguj się do {0}
+loginTitleHtml={0}
+impersonateTitle=Wcielenie {0}
+impersonateTitleHtml=Wcielenie <strong>{0}</strong>
+realmChoice=Strefa
+unknownUser=Nieznany użytkownik
+loginTotpTitle=Konfiguracja dla Mobile Authenticator
+loginProfileTitle=Zaktualizuj informacje konta
+loginTimeout=Zbyt dużo czasu zajęło logowanie. Proces logowania rozpocznie się od nowa.
+oauthGrantTitle=Przydziel dostęp dla {0}
+oauthGrantTitleHtml={0}
+errorTitle=Przykro nam...
+errorTitleHtml=<strong>Przykro</strong> nam...
+emailVerifyTitle=Weryfikacja e-maila
+emailForgotTitle=Nie pamiętasz hasła?
+updatePasswordTitle=Aktualizacja hasła
+codeSuccessTitle=Kod sukcesu
+codeErrorTitle=Kod błędu\: {0}
+displayUnsupported=Żądany typ wyświetlania jest nieobsługiwany
+browserRequired=Do zalogowania wymagana jest przeglądarka
+browserContinue=Przeglądarka jest wymagana by dokończyć logowanie
+browserContinuePrompt=Otworzyć przeglądarkę i kontynuować logowanie? [t/n]\:
+browserContinueAnswer=t
+
+
+termsTitle=Regulamin
+termsText=<p>Regulamin, który należy zdefiniować</p>
+termsPlainText=Regulamin, który należy zdefiniować.
+
+recaptchaFailed=Błędna Recaptcha
+recaptchaNotConfigured=Recaptcha jest wymagana, ale nie skonfigurowana
+consentDenied=Zgoda odrzucona.
+
+noAccount=Nie masz konta?
+username=Nazwa użytkownika (login)
+usernameOrEmail=Nazwa użytkownika lub e-mail (login)
+firstName=Imię
+givenName=Nadane imię
+fullName=Pełne imię i nazwisko
+lastName=Nazwisko
+familyName=Nazwisko rodowe
+email=E-mail
+password=Hasło
+passwordConfirm=Potwierdź hasło
+passwordNew=Nowe hasło
+passwordNewConfirm=Potwierdzenie nowego hasła
+rememberMe=Zapamiętaj mnie
+authenticatorCode=Kod jednorazowy
+address=Adres
+street=Ulica
+locality=Miejscowość
+region=Województwo
+postal_code=Kod pocztowy
+country=Państwo
+emailVerified=Email zweryfikowany
+website=Strona internetowa
+phoneNumber=Nr telefonu
+phoneNumberVerified=Nr telefonu zweryfikowany
+gender=Płeć
+birthday=Data urodzenia
+zoneinfo=Strefa czasowa
+gssDelegationCredential=Świadectwo przekazania uprawnień GSS
+
+profileScopeConsentText=Profil użytkownika
+emailScopeConsentText=Adres email
+addressScopeConsentText=Adres
+phoneScopeConsentText=Numer telefonu
+offlineAccessScopeConsentText=Dostęp offline
+samlRoleListScopeConsentText=Moje role
+rolesScopeConsentText=Role użytkownika
+
+restartLoginTooltip=Restart logowania
+
+loginTotpIntro=Aby uzyskać dostęp do tego konta, musisz skonfigurować generator haseł jednorazowych
+loginTotpStep1=Zainstaluj jedną z następujących aplikacji na telefonie komórkowym
+loginTotpStep2=Otwórz aplikację i zeskanuj kod kreskowy
+loginTotpStep3=Wprowadź jednorazowy kod podany przez aplikację i kliknij Prześlij aby zakończyć konfigurację
+loginTotpManualStep2=Otwórz aplikację i wprowadź klucz
+loginTotpManualStep3=Użyj poniższych wartości konfiguracji, jeśli aplikacja pozwala na ich ustawienie
+loginTotpUnableToScan=Nie można skanować?
+loginTotpScanBarcode=Zeskanować kod paskowy?
+loginCredential=Poświadczenia
+loginOtpOneTime=Kod jednorazowy
+loginTotpType=Typ
+loginTotpAlgorithm=Algorytm
+loginTotpDigits=Cyfry
+loginTotpInterval=Interwał
+loginTotpCounter=Licznik
+loginTotpDeviceName=Nazwa urządzenia
+
+loginTotp.totp=Oparte o czas
+loginTotp.hotp=Oparte o licznik
+
+loginChooseAuthenticator=Wybierz metodę logowania
+
+oauthGrantRequest=Czy przyznajesz te uprawnienia dostępu?
+inResource=w
+
+emailVerifyInstruction1=Została wysłana do Ciebie wiadomość e-mail z instrukcjami jak zweryfikować swój adres e-mail.
+emailVerifyInstruction2=Nie otrzymałem kodu weryfikacyjnego w wiadomości e-mail?
+emailVerifyInstruction3=aby ponownie wysłać wiadomość e-mail.
+
+emailLinkIdpTitle=Link {0}
+emailLinkIdp1=Wiadomość e-mail z instrukcjami, aby powiązać konto {0} {1} z kontem {2} została wysłana do Ciebie.
+emailLinkIdp2=Nie otrzymałem kodu weryfikacyjnego w wiadomości e-mail?
+emailLinkIdp3=aby ponownie wysłać wiadomość e-mail.
+emailLinkIdp4=Jeśli już zweryfikowana e-mail w innej przeglądarce
+emailLinkIdp5=aby kontynuować.
+
+backToLogin=&laquo; Powrót do logowania
+
+emailInstruction=Wpisz swój adres e-mail lub nazwę użytkownika a wyślemy do Ciebie instrukcje, jak utworzyć nowe hasło.
+
+copyCodeInstruction=Proszę skopiować ten kod i wklej go do aplikacji\:
+
+pageExpiredTitle=Strona wygasła
+pageExpiredMsg1=Aby ponownie uruchomić proces logowania
+pageExpiredMsg2=Aby kontynuować proces logowania
+
+personalInfo=Informacje osobiste\:
+role_admin=Admin
+role_realm-admin=Strefa Admin
+role_create-realm=Utwórz strefę
+role_create-client=Utwórz klienta
+role_view-realm=Wyświetl strefę
+role_view-users=Wyświetl użytkowników
+role_view-applications=Wyświetl aplikacje
+role_view-clients=Wyświetl klientów
+role_view-events=Wyświetl zdarzenia
+role_view-identity-providers=Wyświetl dostawców tożsamości
+role_manage-realm=Zarządzaj strefą
+role_manage-users=Zarządzaj użytkownikami
+role_manage-applications=Zarządzaj aplikacjami
+role_manage-identity-providers=Zarządzaj dostawcami tożsamości
+role_manage-clients=Zarządzaj klientami
+role_manage-events=Zarządzaj zdarzeniami
+role_view-profile=Zobacz profil
+role_manage-account=Zarządzaj kontem
+role_manage-account-links=Zarządzanie łączami konta
+role_read-token=Odczytu tokenu
+role_offline-access=Dostęp offline
+client_account=Konto
+client_account-console=Konsola konta
+client_security-admin-console=Konsola administratora bezpieczeństwa
+client_admin-cli=Admin CLI
+client_realm-management=Zarządzanie strefą
+client_broker=Broker
+
+requiredFields=Wymagane pola
+
+invalidUserMessage=Nieprawidłowa nazwa użytkownika lub hasło.
+invalidUsernameMessage=Nieprawidłowa nazwa użytkownika.
+invalidUsernameOrEmailMessage=Nieprawidłowa nazwa użytkownika lub hasło.
+invalidPasswordMessage=Nieprawidłowe hasło.
+invalidEmailMessage=Nieprawidłowy adres e-mail.
+accountDisabledMessage=Konto jest wyłączone, skontaktuj się z administratorem.
+accountTemporarilyDisabledMessage=Konto jest tymczasowo wyłączone, skontaktuj się z administratorem lub spróbuj ponownie później.
+expiredCodeMessage=Przekroczono limit czasu logowania. Proszę Zaloguj się ponownie.
+expiredActionMessage=Akcja wygasła. Proszę kontynuować logowanie.
+expiredActionTokenNoSessionMessage=Akcja wygasła.
+expiredActionTokenSessionExistsMessage=Akcja wygasła. Proszę uruchomić ponownie.
+
+missingFirstNameMessage=Proszę podać imię.
+missingLastNameMessage=Proszę podać nazwisko.
+missingEmailMessage=Proszę podać e-mail.
+missingUsernameMessage=Proszę podać nazwę użytkownika.
+missingPasswordMessage=Proszę podać hasło.
+missingTotpMessage=Proszę podać kod uwierzytelniający.
+missingTotpDeviceNameMessage=Proszę podać nazwę urządzenia.
+notMatchPasswordMessage=Hasła nie są zgodne.
+
+invalidPasswordExistingMessage=Nieprawidłowe istniejące hasło.
+invalidPasswordBlacklistedMessage=Nieprawidłowe hasło\: hasło jest na czarnej liście.
+invalidPasswordConfirmMessage=Potwierdzenie hasła nie pasuje.
+invalidTotpMessage=Nieprawidłowy kod uwierzytelnienia.
+
+usernameExistsMessage=Nazwa użytkownika już istnieje.
+emailExistsMessage=Email już istnieje.
+
+federatedIdentityExistsMessage=Użytkownik z {0} {1} już istnieje. Zaloguj się do zarządzania kontem aby połączyć konto.
+
+confirmLinkIdpTitle=Konto już istnieje
+federatedIdentityConfirmLinkMessage=Użytkownik z {0} {1} już istnieje. Co chcesz zrobić?
+federatedIdentityConfirmReauthenticateMessage=Uwierzytelnij się aby połączyć swoje konto z {0}
+nestedFirstBrokerFlowMessage=Użytkownik {0} {1} nie jest powiązany z żadnym znanym użytkownikiem.
+confirmLinkIdpReviewProfile=Przejrzyj profil
+confirmLinkIdpContinue=Dodaj do istniejącego konta
+
+configureTotpMessage=Musisz skonfigurować Mobile Authenticator aby aktywować swoje konto.
+updateProfileMessage=Musisz zaktualizować profilu użytkownika aby aktywować swoje konto.
+updatePasswordMessage=Musisz zmienić swoje hasło aby aktywować swoje konto.
+resetPasswordMessage=Musisz zmienić swoje hasło.
+verifyEmailMessage=Musisz zweryfikować swój adres e-mail aby aktywować swoje konto.
+linkIdpMessage=Musisz zweryfikować swój adres e-mail, aby połączyć swoje konto z {0}.
+
+emailSentMessage=Powinieneś otrzymywać wkrótce pocztę z dalszymi instrukcjami.
+emailSendErrorMessage=Nie można wysłać wiadomości e-mail, proszę spróbować ponownie później.
+
+accountUpdatedMessage=Twoje konto zostało zaktualizowane.
+accountPasswordUpdatedMessage=Twoje hasło zostało zaktualizowane.
+
+delegationCompleteHeader=Logowanie udane
+delegationCompleteMessage=Możesz zamknąć okno przeglądarki i przejść wstecz do aplikacji konsoli.
+delegationFailedHeader=Logowanie nie powiodło się
+delegationFailedMessage=Możesz zamknąć okno przeglądarki, wrócić do aplikacji konsoli i spróbować zalogować się ponownie.
+
+noAccessMessage=Brak dostępu
+
+invalidPasswordMinLengthMessage=Nieprawidłowe hasło\: minimalna długość {0}.
+invalidPasswordMinDigitsMessage=Nieprawidłowe hasło\: musi zawierać przynajmniej {0} cyfr.
+invalidPasswordMinLowerCaseCharsMessage=Nieprawidłowe hasło\: musi zawierać co najmniej {0} małych liter.
+invalidPasswordMinUpperCaseCharsMessage=Nieprawidłowe hasło\: musi zawierać co najmniej {0} wielkich liter.
+invalidPasswordMinSpecialCharsMessage=Nieprawidłowe hasło\: musi zawierać przynajmniej {0} znaków specjalnych.
+invalidPasswordNotUsernameMessage=Nieprawidłowe hasło\: nie może być nazwą użytkownika.
+invalidPasswordRegexPatternMessage=Nieprawidłowe hasło\: brak zgodności z wyrażeniem regularnym.
+invalidPasswordHistoryMessage=Nieprawidłowe hasło\: nie może być takie jak {0} ostatnich haseł.
+invalidPasswordGenericMessage=Nieprawidłowe hasło\: nowe hasło nie jest zgodne z zasadami haseł.
+
+failedToProcessResponseMessage=Nie można przetworzyć odpowiedzi
+httpsRequiredMessage=Wymagany HTTPS
+realmNotEnabledMessage=Strefa nie jest aktywna
+invalidRequestMessage=Nieprawidłowe żądanie
+failedLogout=Wylogowanie nie powiodło się
+unknownLoginRequesterMessage=Nieznany żądający logowania
+loginRequesterNotEnabledMessage=Żądający logowania nie jest aktywny
+bearerOnlyMessage=Klienci bearer-only nie mogą inicjować logowania przez przeglądarkę
+standardFlowDisabledMessage=Klient nie może zainicjować logowania przez przeglądarkę z podanym response_type. Standardowy przepływ jest wyłączony dla klienta.
+implicitFlowDisabledMessage=Klient nie może zainicjować logowania przez przeglądarkę z podanym response_type. Niejawny przepływ jest wyłączony dla klienta.
+invalidRedirectUriMessage=Nieprawidłowy uri przekierowania
+unsupportedNameIdFormatMessage=Nieobsługiwany NameIDFormat
+invalidRequesterMessage=Nieprawidłowy żądający
+registrationNotAllowedMessage=Rejestracja nie jest dozwolona
+resetCredentialNotAllowedMessage=Zresetowanie poświadczeń nie jest dozwolone
+
+permissionNotApprovedMessage=Uprawnienie nie zatwierdzone.
+noRelayStateInResponseMessage=Brak przekazanego stanu w odpowiedzi dostawcy tożsamości.
+insufficientPermissionMessage=Niewystarczające uprawnienia do łączenia tożsamości.
+couldNotProceedWithAuthenticationRequestMessage=Nie można kontynuować żądania uwierzytelnienia do dostawcy tożsamości.
+couldNotObtainTokenMessage=Nie można uzyskać tokenu od dostawcy tożsamości.
+unexpectedErrorRetrievingTokenMessage=Nieoczekiwany błąd podczas pobierania tokenu od dostawcy tożsamości.
+unexpectedErrorHandlingResponseMessage=Nieoczekiwany błąd podczas obsługi odpowiedzi od dostawcy tożsamości.
+identityProviderAuthenticationFailedMessage=Uwierzytelnianie nie powiodło się. Nie można uwierzytelnić za pomocą dostawcy tożsamości.
+couldNotSendAuthenticationRequestMessage=Nie może wysyłać żądania uwierzytelniania do dostawcy tożsamości.
+unexpectedErrorHandlingRequestMessage=Nieoczekiwany błąd podczas obsługi żądania uwierzytelnienia do dostawcy tożsamości.
+invalidAccessCodeMessage=Nieprawidłowy kod dostępu.
+sessionNotActiveMessage=Sesja nie jest aktywna.
+invalidCodeMessage=Wystąpił błąd, zaloguj się ponownie za pośrednictwem aplikacji.
+identityProviderUnexpectedErrorMessage=Nieoczekiwany błąd podczas uwierzytelniania u dostawcy tożsamości
+identityProviderNotFoundMessage=Nie można odnaleźć dostawcy tożsamości z tym identyfikatorem.
+identityProviderLinkSuccess=Pomyślnie zweryfikowano e-mail. Wróć do oryginalnej przeglądarki i tam kontynuuj logowanie.
+staleCodeMessage=Ta strona nie jest już ważna, proszę wrócić do aplikacji i zalogować się ponownie
+realmSupportsNoCredentialsMessage=Strefa nie obsługuje dowolnego typu poświadczeń.
+identityProviderNotUniqueMessage=Strefa obsługuje wielu dostawców tożsamości. Nie można określić dostawcy tożsamości, który powinien być używany do uwierzytelniania.
+emailVerifiedMessage=Twój adres e-mail został zweryfikowany.
+staleEmailVerificationLink=Użyto nieaktualny link stanu, który stracił ważność.  Może e-mail został już zweryfikowany?
+identityProviderAlreadyLinkedMessage=Stowarzyszona tożsamość, zwrócona przez {0} jest już połączona z innym użytkownikiem.
+confirmAccountLinking=Potwierdź powiązanie konta {0} dostawcy tożsamości {1} z twoim kontem.
+confirmEmailAddressVerification=Potwierdź ważność adresu e-mail {0}.
+confirmExecutionOfActions=Wykonaj następujące akcje
+
+backToApplication=&laquo; Powrót do aplikacji
+missingParameterMessage=Brakujące parametry\: {0}
+clientNotFoundMessage=Klient nie znaleziony.
+clientDisabledMessage=Klient nieaktywny.
+invalidParameterMessage=Nieprawidłowy parametr\: {0}
+alreadyLoggedIn=Jesteś już zalogowany.
+differentUserAuthenticated=Jesteś już uwierzytelniona/y jako inny użytkownik ''{0}'' w tej sesji. Najpierw się wyloguj.
+brokerLinkingSessionExpired=Żądano łączenia kont brokera, ale bieżąca sesja już jest nieważna.
+proceedWithAction=&raquo; kliknij tutaj, aby przejść
+
+requiredAction.CONFIGURE_TOTP=Skonfiguruj OTP
+requiredAction.TERMS_AND_CONDITIONS=Regulamin
+requiredAction.UPDATE_PASSWORD=Zaktualizuj hasło
+requiredAction.UPDATE_PROFILE=Zaktualizuj profil
+requiredAction.VERIFY_EMAIL=Zweryfikuj adres e-mail
+
+doX509Login=Użytkownik będzie zalogowany jako\:
+clientCertificate=X509 certyfikat klienta\:
+noCertificate=[brak certyfikatu]
+
+
+pageNotFound=Nie znaleziono strony
+internalServerError=Wystąpił błąd wewnętrzny serwera
+
+console-username=Nazwa użytkownika\:
+console-password=Hasło\:
+console-otp=Hasło jednorazowe\:
+console-new-password=Nowe hasło\:
+console-confirm-password=Potwierdź hasło\:
+console-update-password=Aktualizacja hasła jest wymagana.
+console-verify-email=Musisz zweryfikować swój adres e-mail.  Wiadomość e-mail z kodem weryfikacyjnym została wysłana do {0}. Podaj ten kod poniżej.
+console-email-code=Kod z e-mail\:
+console-accept-terms=Akceptujesz warunki? [t/n]\:
+console-accept=t
+
+readOnlyUsernameMessage=Zmiana nazwy użytkownika nie jest możliwa, ponieważ edycja konta jest zablokowana.
diff --git a/themes/custom-theme-template/login/messages/messages_pt_BR.properties b/themes/custom-theme-template/login/messages/messages_pt_BR.properties
new file mode 100755
index 0000000000000000000000000000000000000000..3a931c3281f57a0d6e075c9becf6b5a9c26a2c98
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_pt_BR.properties
@@ -0,0 +1,390 @@
+doLogIn=Entrar
+doRegister=Cadastre-se
+doRegisterSecurityKey=Cadastre-se
+doCancel=Cancelar
+doSubmit=Ok
+doBack=Voltar
+doYes=Sim
+doNo=Não
+doContinue=Continuar
+doIgnore=Ignorar
+doAccept=Aceitar
+doDecline=Rejeitar
+doForgotPassword=Esqueceu sua senha?
+doClickHere=Clique aqui
+doImpersonate=Personificar
+doTryAgain=Tente novamente
+doTryAnotherWay=Tente outra forma
+doConfirmDelete=Confirmar descadastramento
+errorDeletingAccount=Falha ao apagar conta
+deletingAccountForbidden=Você não tem permissões para apagar a sua própria conta, entre em contato com um administrador.
+kerberosNotConfigured=Kerberos Não Configurado
+kerberosNotConfiguredTitle=Kerberos Não Configurado
+bypassKerberosDetail=Ou você não possui uma sessão Kerberos ou o seu navegador não está configurado para usar o acesso do Kerberos. Por favor, clique em continuar para fazer o login no através de outros meios
+kerberosNotSetUp=Kerberos não está configurado. Você não pode acessar a aplicação.
+registerTitle=Registre-se
+loginAccountTitle=Entrar na sua conta
+loginTitle=Entrar em {0}
+loginTitleHtml={0}
+impersonateTitle={0} Personificar Usuário
+impersonateTitleHtml=<strong>{0}</strong> Personificar Usuário
+realmChoice=Domínio
+unknownUser=Usuário desconhecido
+loginTotpTitle=Configuração do autenticador móvel
+loginProfileTitle=Atualizar Informações da Conta
+loginTimeout=Você demorou muito para entrar. Por favor, recomece o processo de login.
+oauthGrantTitle=Conceder acesso a {0}
+oauthGrantTitleHtml={0}
+errorTitle=Sentimos muito...
+errorTitleHtml=<strong>Sentimos</strong> muito ...
+emailVerifyTitle=Verificação de endereço de e-mail
+emailForgotTitle=Esqueceu sua senha?
+updatePasswordTitle=Atualizar senha
+codeSuccessTitle=Código de sucesso
+codeErrorTitle=Código de erro\: {0}
+displayUnsupported=Tipo de exibição solicitado não suportado
+browserRequired=Navegador necessário para realizar acesso
+browserContinue=Navegador necessário para concluir o login
+browserContinuePrompt=Abrir navegador e continuar o login? [s/n]:
+browserContinueAnswer=s
+
+
+termsTitle=Termos e Condições
+termsText=<p>Termos e condições a serem definidos</p>
+termsPlainText=Termos e condições a serem definidos.
+
+recaptchaFailed=Recaptcha Inválido
+recaptchaNotConfigured=O recaptcha é necessário, mas não foi configurado
+consentDenied=Consentimento negado.
+
+noAccount=Novo usuário?
+username=Nome de usuário
+usernameOrEmail=Nome de usuário ou e-mail
+firstName=Primeiro nome
+givenName=Primeiro nome
+fullName=Nome completo
+lastName=Sobrenome
+familyName=Sobrenome
+email=Endereço de e-mail
+password=Senha
+passwordConfirm=Confirme a senha
+passwordNew=Nova senha
+passwordNewConfirm=Confirmação de Nova Senha
+rememberMe=Mantenha-me conectado
+authenticatorCode=Código autenticador
+address=Endereço
+street=Logradouro
+locality=Cidade ou localidade
+region=Estado
+postal_code=CEP
+country=País
+emailVerified=Endereço de e-mail verificado
+website=Página da web
+phoneNumber=Número de telefone
+phoneNumberVerified=Número de telefone verificado
+gender=Gênero
+birthday=Data de nascimento
+zoneinfo=Zona horária
+gssDelegationCredential=Delegação de Credenciais GSS
+logoutOtherSessions=Sair dos outros dispositivos
+
+profileScopeConsentText=Perfil de usuário
+emailScopeConsentText=Endereço de e-mail
+addressScopeConsentText=Endereço
+phoneScopeConsentText=Número de telefone
+offlineAccessScopeConsentText=Acesso Offline
+samlRoleListScopeConsentText=Meus Perfis de Acesso
+rolesScopeConsentText=Perfis de acesso do usuário
+
+restartLoginTooltip=Reiniciar o login
+
+loginTotpIntro=Você precisa configurar um gerador de código de uso único para acessar esta conta
+loginTotpStep1=Instale um dos seguintes aplicativos no seu celular:
+loginTotpStep2=Abra o aplicativo e escaneie o código QR:
+loginTotpStep3=Digite o código de uso único fornecido pelo aplicativo e clique em Ok para concluir a configuração.
+loginTotpStep3DeviceName=Forneça um nome de dispositivo para ajudá-lo a gerenciar seus dispositivos de autenticação de dois fatores.
+loginTotpManualStep2=Abra o aplicativo e digite a chave:
+loginTotpManualStep3=Use os seguintes valores de configuração se o aplicativo permitir defini-los:
+loginTotpUnableToScan=Não foi possível ler o código QR?
+loginTotpScanBarcode=Escanear código QR?
+loginCredential=Credencial
+loginOtpOneTime=Código de uso único
+loginTotpType=Tipo
+loginTotpAlgorithm=Algoritmo
+loginTotpDigits=Dígitos
+loginTotpInterval=Intervalo
+loginTotpCounter=Contador
+loginTotpDeviceName=Nome do dispositivo
+
+loginTotp.totp=Baseado em tempo
+loginTotp.hotp=Baseado em contador
+
+loginChooseAuthenticator=Selecione o método de login
+
+oauthGrantRequest=Você concede esses privilégios de acesso?
+inResource=em
+
+emailVerifyInstruction1=Um e-mail com instruções para verificar o seu endereço de e-mail foi enviado para você.
+emailVerifyInstruction2=Não recebeu um código de verificação em seu e-mail?
+emailVerifyInstruction3=para reenviar o e-mail.
+
+emailLinkIdpTitle=Vincular {0}
+emailLinkIdp1=Um e-mail com instruções para vincular a conta {0} {1} com sua conta {2} foi enviado para você.
+emailLinkIdp2=Não recebeu um código de verificação no e-mail?
+emailLinkIdp3=para reenviar o e-mail.
+emailLinkIdp4=Se você já verificou o email em outro navegador
+emailLinkIdp5=para continuar.
+
+backToLogin=&laquo; Voltar ao Login
+
+emailInstruction=Digite seu nome de usuário ou endereço de e-mail e nós lhe enviaremos instruções sobre como criar uma nova senha.
+
+copyCodeInstruction=Por favor, copie o código e cole-o em seu aplicativo:
+
+pageExpiredTitle=A página expirou
+pageExpiredMsg1=Para reiniciar o processo de login
+pageExpiredMsg2=Para continuar o processo de login
+
+personalInfo=Informações Pessoais:
+role_admin=Admininstrador
+role_realm-admin=Admininstrador do Domínio
+role_create-realm=Criar domínio
+role_create-client=Criar cliente
+role_view-realm=Visualizar domínio
+role_view-users=Visualizar usuários
+role_view-applications=Visualizar aplicativos
+role_view-clients=Visualizar clientes
+role_view-events=Visualizar eventos
+role_view-identity-providers=Visualizar provedores de identidade
+role_manage-realm=Gerenciar domínio
+role_manage-users=Gerenciar usuários
+role_manage-applications=Gerenciar aplicativos
+role_manage-identity-providers=Gerenciar provedores de identidade
+role_manage-clients=Gerenciar clientes
+role_manage-events=Gerenciar eventos
+role_view-profile=Visualizar perfil
+role_manage-account=Gerenciar conta
+role_manage-account-links=Gerenciar vinculações de conta
+role_read-token=Ler token
+role_offline-access=Acesso offline
+client_account=Conta
+client_account-console=Console da Conta
+client_security-admin-console=Console de Administração de Segurança
+client_admin-cli=CLI de Administração
+client_realm-management=Gerenciamento de Domínio
+client_broker=Provedor de Identidade
+
+requiredFields=Campos obrigatórios
+
+invalidUserMessage=Nome de usuário ou senha inválida.
+invalidUsernameMessage=Nome de usuário inválido.
+invalidUsernameOrEmailMessage=Nome de usuário ou endereço de e-mail inválido.
+invalidPasswordMessage=Senha inválida.
+invalidEmailMessage=Endereço de e-mail inválido.
+accountDisabledMessage=Conta desativada, por favor, contate um administrador.
+accountTemporarilyDisabledMessage=Conta temporariamente indisponível, por favor, contate um administrador ou tente novamente mais tarde.
+expiredCodeMessage=Tempo de login expirado. Por favor, faça login novamente.
+expiredActionMessage=Ação expirada. Por favor, continue com o login agora.
+expiredActionTokenNoSessionMessage=Ação expirada.
+expiredActionTokenSessionExistsMessage=Ação expirada. Por favor, comece novamente.
+
+missingFirstNameMessage=Por favor, informe o primeiro nome.
+missingLastNameMessage=Por favor, informe o sobrenome.
+missingEmailMessage=Por favor, informe o endereço de e-mail.
+missingUsernameMessage=Por favor, informe o nome de usuário.
+missingPasswordMessage=Por favor, informe a senha.
+missingTotpMessage=Por favor, informe o código de uso único.
+missingTotpDeviceNameMessage=Por favor, informe o nome do dispositivo.
+notMatchPasswordMessage=As senhas não coincidem.
+
+invalidPasswordExistingMessage=Senha atual inválida.
+invalidPasswordBlacklistedMessage=Senha inválida, devido a lista de exclusão.
+invalidPasswordConfirmMessage=Senha de confirmação não coincide.
+invalidTotpMessage=Código de uso único inválido.
+
+usernameExistsMessage=Nome de usuário já existe.
+emailExistsMessage=Endereço de e-mail já existe.
+
+federatedIdentityExistsMessage=Usuário com {0} {1} já existe. Por favor, entre no gerenciamento de conta para vincular a conta.
+federatedIdentityUnavailableMessage=Usuário {0} autenticado com o provedor de identidade {1} não existe. Por favor, entre em contato com um administrador.
+
+confirmLinkIdpTitle=Conta já existente
+federatedIdentityConfirmLinkMessage=Usuário com {0} {1} já existe. Como você quer continuar?
+federatedIdentityConfirmReauthenticateMessage=Autenticar para vincular sua conta com {0}
+nestedFirstBrokerFlowMessage=O usuário {0} {1} não está vinculado a nenhum usuário conhecido.
+confirmLinkIdpReviewProfile=Revisar informações do perfil
+confirmLinkIdpContinue=Vincular à conta existente
+
+configureTotpMessage=Você precisa configurar seu celular com o autenticador Mobile para ativar sua conta.
+updateProfileMessage=Você precisa atualizar o seu perfil de usuário para ativar sua conta.
+updatePasswordMessage=Você precisa mudar sua senha para ativar sua conta.
+resetPasswordMessage=Você precisa mudar sua senha.
+verifyEmailMessage=Você precisa verificar o seu endereço de e-mail para ativar sua conta.
+linkIdpMessage=Você precisa confirmar o seu endereço de e-mail para vincular sua conta com {0}.
+
+emailSentMessage=Você deverá receber um e-mail em breve com mais instruções.
+emailSendErrorMessage=Falha ao enviar e-mail, por favor, tente novamente mais tarde.
+
+accountUpdatedMessage=Sua conta foi atualizada.
+accountPasswordUpdatedMessage=Sua senha foi atualizada.
+
+delegationCompleteHeader=Autenticação Bem Sucedida
+delegationCompleteMessage=Você pode fechar esta janela do navegador e voltar ao seu aplicativo.
+delegationFailedHeader=Falha na Autenticação
+delegationFailedMessage=Você pode fechar esta janela do navegador e voltar ao aplicativo e tentar fazer login novamente.
+
+noAccessMessage=Sem acesso
+
+invalidPasswordMinLengthMessage=Senha inválida\: deve ter pelo menos {0} caracteres.
+invalidPasswordMinDigitsMessage=Senha inválida\: deve conter pelo menos {0} número(s).
+invalidPasswordMinLowerCaseCharsMessage=Senha inválida\: deve conter pelo menos {0} letra(s) minúscula(s).
+invalidPasswordMinUpperCaseCharsMessage=Senha inválida\: deve conter pelo menos {0} letra(s) maiúscula(s).
+invalidPasswordMinSpecialCharsMessage=Senha inválida\: deve conter pelo menos {0} caractere(s) especial(is).
+invalidPasswordNotUsernameMessage=Senha inválida\: não pode ser igual ao nome de usuário
+invalidPasswordNotEmailMessage=Senha inválida: não pode ser igual ao endereço de e-mail.
+invalidPasswordRegexPatternMessage=Senha inválida\: não corresponde ao(s) padrão(ões) de expressão regular.
+invalidPasswordHistoryMessage=Senha inválida\: não pode ser igual a qualquer uma da(s) última(s) {0} senha(s).
+invalidPasswordGenericMessage=Senha inválida: a nova senha não cumpre as políticas de senha.
+
+failedToProcessResponseMessage=Falha ao processar a resposta
+httpsRequiredMessage=HTTPS necessário
+realmNotEnabledMessage=Domínio desativado
+invalidRequestMessage=Solicitação inválida
+failedLogout=Falha ao sair
+unknownLoginRequesterMessage=Solicitante de login desconhecido
+loginRequesterNotEnabledMessage=Solicitante de login desativado
+bearerOnlyMessage=Aplicativos configurados como Bearer-Only não têm permissão para iniciar o login pelo navegador
+standardFlowDisabledMessage=O cliente não tem permissão para iniciar o login com o response_type informado. O fluxo padrão está desabilitado para o cliente.
+implicitFlowDisabledMessage=O cliente não tem permissão para iniciar o login com o response_type informado. O fluxo implícito está desabilitado para o cliente.
+invalidRedirectUriMessage=URI de redirecionamento inválido
+unsupportedNameIdFormatMessage=NameIDFormat não suportado
+invalidRequesterMessage=Solicitante inválido
+registrationNotAllowedMessage=Cadastro não é permitido
+resetCredentialNotAllowedMessage=Sem permissão de redefinição de credenciais
+
+permissionNotApprovedMessage=Permissão não aprovada.
+noRelayStateInResponseMessage=Sem estado de retransmissão na resposta do provedor de identidade.
+insufficientPermissionMessage=Permissões insuficientes para vincular identidades.
+couldNotProceedWithAuthenticationRequestMessage=Não foi possível proceder com a solicitação de autenticação ao provedor de identidade.
+couldNotObtainTokenMessage=Não foi possível obter token do provedor de identidade.
+unexpectedErrorRetrievingTokenMessage=Erro inesperado ao recuperar token do provedor de identidade.
+unexpectedErrorHandlingResponseMessage=Erro inesperado ao tratar a resposta do provedor de identidade.
+identityProviderAuthenticationFailedMessage=Falha na autenticação. Não foi possível autenticar com o provedor de identidade.
+couldNotSendAuthenticationRequestMessage=Não foi possível enviar a solicitação de autenticação ao provedor de identidade.
+unexpectedErrorHandlingRequestMessage=Erro inesperado ao tratar o pedido de autenticação ao provedor de identidade.
+invalidAccessCodeMessage=Código de acesso inválido.
+sessionNotActiveMessage=Sessão inativa.
+invalidCodeMessage=Um erro correu, por favor, faça login novamente através da aplicação.
+identityProviderUnexpectedErrorMessage=Erro inesperado durante a autenticação com o provedor de identidade
+identityProviderMissingStateMessage=Parâmetro de estado ausente da resposta do provedor de identidades.
+identityProviderNotFoundMessage=Não foi possível encontrar um provedor de identidade com o identificador.
+identityProviderLinkSuccess=O seu endereço de e-mail foi confirmado com sucesso. Por favor, retorne à aba original e continue com o login.
+staleCodeMessage=Esta página não é mais válida. Por favor, volte à aplicação e faça login novamente
+realmSupportsNoCredentialsMessage=O domínio não suporta qualquer tipo de credencial.
+credentialSetupRequired=Não é possível fazer o login, a configuração de credencial é necessária.
+identityProviderNotUniqueMessage=O domínio suporta múltiplos provedores de identidade. Não foi possível determinar qual o provedor de identidade deve ser usado para autenticação.
+emailVerifiedMessage=O seu endereço de e-mail foi confirmado.
+staleEmailVerificationLink=O link em que você clicou é um link antigo e não é mais válido. Talvez você já tenha confirmado o seu endereço de e-mail.
+identityProviderAlreadyLinkedMessage=A conta retornada do {0} já está vinculada a outro usuário.
+confirmAccountLinking=Confirme o vinculação da conta {0} do provedor de identidade {1} à sua conta.
+confirmEmailAddressVerification=Confirme a validade do endereço de e-mail {0}.
+confirmExecutionOfActions=Execute a(s) seguinte(s) ação(ões)
+
+backToApplication=&laquo; Voltar para o aplicativo
+missingParameterMessage=Parâmetros ausentes\: {0}
+clientNotFoundMessage=Cliente não encontrado.
+clientDisabledMessage=Cliente desativado.
+invalidParameterMessage=Parâmentro inválido\: {0}
+alreadyLoggedIn=Você já está logado.
+differentUserAuthenticated=Você já está autenticado como outro usuário ''{0}'' nesta sessão. Por favor, finalize a sessão primeiro.
+brokerLinkingSessionExpired=A vinculção de conta do provedor de identidade foi solicitado, mas a sessão atual não é mais válida.
+proceedWithAction=» Clique aqui para continuar
+
+requiredAction.CONFIGURE_TOTP=Configurar Autenticação de Dois Fatores
+requiredAction.TERMS_AND_CONDITIONS=Termos e Condições
+requiredAction.UPDATE_PASSWORD=Atualizar Senha
+requiredAction.UPDATE_PROFILE=Atualizar Perfil
+requiredAction.VERIFY_EMAIL=Verificar Endereço de E-mail
+
+doX509Login=Você será logado como\:
+clientCertificate=Certificado X509 do cliente\:
+noCertificate=[Sem Certificado]
+
+
+pageNotFound=Página não encontrada
+internalServerError=Ocorreu um erro interno no servidor
+
+console-username=Nome de usuário:
+console-password=Senha:
+console-otp=Código de uso único:
+console-new-password=Nova Senha:
+console-confirm-password=Confirmação de Senha:
+console-update-password=Você precisa atualizar a sua senha.
+console-verify-email=Você precisa verificar o seu endereço de e-mail. Enviamos um e-mail para {0} que contém um código de verificação. Digite o código enviado no campo abaixo.
+console-email-code=Código do e-mail:
+console-accept-terms=Aceita os Termos? [s/n]:
+console-accept=s
+
+# Openshift messages
+openshift.scope.user_info=Informações do usuário
+openshift.scope.user_check-access=Informações de acesso do usuário
+openshift.scope.user_full=Acesso Completo
+openshift.scope.list-projects=Listar projetos
+
+# SAML authentication
+saml.post-form.title=Redirecionamento de Autenticação
+saml.post-form.message=Redirecionando... Por favor, aguarde.
+saml.post-form.js-disabled=O JavaScript está desabilitado. É altamente recomendável habilitá-lo. Clique no botão abaixo para continuar. 
+
+#authenticators
+otp-display-name=Aplicativo Autenticador
+otp-help-text=Insira o código de verificação do aplicativo autenticador.
+password-display-name=Senha
+password-help-text=Faça o login digitando sua senha.
+auth-username-form-display-name=Nome de usuário
+auth-username-form-help-text=Faça o login digitando seu nome de usuário.
+auth-username-password-form-display-name=Nome de usuário e senha
+auth-username-password-form-help-text=Faça o login digitando seu nome de usuário e senha.
+
+# WebAuthn
+webauthn-display-name=Chave de Segurança
+webauthn-help-text=Use sua chave de segurança para fazer login.
+webauthn-passwordless-display-name=Chave de Segurança
+webauthn-passwordless-help-text=Use sua chave de segurança para fazer login sem senha.
+webauthn-login-title=Login com Chave de Segurança
+webauthn-registration-title=Registrar Chave de Segurança
+webauthn-available-authenticators=Autenticadores disponíveis
+webauthn-unsupported-browser-text=WebAuthn não é suportada pelo seu navegador. Tente outro navegador ou entre em contato com um administrador.
+
+# WebAuthn Error
+webauthn-error-title=Erro de Chave de Segurança
+webauthn-error-registration=Falha ao registrar sua Chave de Segurança.
+webauthn-error-api-get=Falha ao autenticar usando a Chave de Segurança.
+webauthn-error-different-user=O primeiro usuário autenticado não corresponde àquele autenticado pela Chave de Segurança.
+webauthn-error-auth-verification=O resultado da autenticação da Chave de Segurança é inválido.<br /> {0}
+webauthn-error-register-verification=O resultado do registro da Chave de Segurança é inválido.<br /> {0}
+webauthn-error-user-not-found=Usuário desconhecido autenticado pela Chave de Segurança.
+
+# Identity provider
+identity-provider-redirector=Conecte-se com outro Provedor de Identidade
+identity-provider-login-label=Ou entre com
+
+finalDeletionConfirmation=Se você apagar a sua conta, ela não poderá ser recuperada. Para manter a sua conta, clique em Cancelar.
+irreversibleAction=Esta ação é irreversível
+deleteAccountConfirm=Confirmação de descadastramento
+
+deletingImplies=Apagar a sua conta implica em:
+errasingData=Remover todos os seus dados
+loggingOutImmediately=Sair da aplicação imediatamente
+accountUnusable=Qualquer uso subsequente da aplicação não será possível com esta conta
+userDeletedSuccessfully=Usuário excluído com sucesso
+
+readOnlyUsernameMessage=Você^não pode atualizar o seu nome de usuário, uma vez que é apenas de leitura.
+
+# new RP-initiated logout
+frontchannel-logout.title=Saindo
+frontchannel-logout.message=Você está saindo dos seguintes aplicativos
+logoutConfirmTitle=Saindo
+logoutConfirmHeader=Você realmente deseja sair?
+doLogout=Sair
+
diff --git a/themes/custom-theme-template/login/messages/messages_ru.properties b/themes/custom-theme-template/login/messages/messages_ru.properties
new file mode 100644
index 0000000000000000000000000000000000000000..107a3dbc8244d82205fcb5c529a20aba228e2e44
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_ru.properties
@@ -0,0 +1,238 @@
+doLogIn=Вход
+doRegister=Регистрация
+doRegisterSecurityKey=Регистрация
+doCancel=Отмена
+doSubmit=Подтвердить
+doYes=Да
+doNo=Нет
+doContinue=Продолжить
+doAccept=Подтвердить
+doDecline=Отменить
+doForgotPassword=Забыли пароль?
+doClickHere=Нажмите сюда
+doImpersonate=Имперсонализироваться
+kerberosNotConfigured=Kerberos не сконфигурирован
+kerberosNotConfiguredTitle=Kerberos не сконфигурирован
+bypassKerberosDetail=Либо вы не вошли в систему с помощью Kerberos, либо ваш браузер не настроен для входа в систему Kerberos. Пожалуйста, нажмите кнопку 'Продолжить' для входа в с помощью других средств
+kerberosNotSetUp=Kerberos не настроен. Вы не можете войти.
+registerWithTitle=Зарегистрироваться с {0}
+registerWithTitleHtml={0}
+loginTitle=Вход {0}
+loginTitleHtml={0}
+impersonateTitle={0} Имперсонализация пользователя
+impersonateTitleHtml=<strong>{0}</strong> Имперсонализация пользователя
+realmChoice=Realm
+unknownUser=Неизвестный пользователь
+loginTotpTitle=Настройка мобильного аутентификатора
+loginProfileTitle=Обновление информации учетной записи
+loginTimeout=Вы слишком долго бездействовали. Процесс аутентификации начнется с начала.
+oauthGrantTitle=Согласовать доступ
+oauthGrantTitleHtml={0}
+errorTitle=Мы сожалеем...
+errorTitleHtml=Мы <strong>сожалеем</strong> ...
+emailVerifyTitle=Подтверждение адреса E-mail
+emailForgotTitle=Забыли пароль?
+updatePasswordTitle=Обновление пароля
+codeSuccessTitle=Успешный код
+codeErrorTitle=Ошибочный код\: {0}
+
+pageNotFound=Страница не найдена
+
+termsTitle=Условия и положения
+termsTitleHtml=Условия и положения
+termsText=<p>Условия и положения должны быть определены</p>
+
+recaptchaFailed=Некорректная Recaptcha
+recaptchaNotConfigured=Recaptcha требуется, но не сконфигурирована
+consentDenied=В согласовании отказано.
+
+# SAML authentication
+saml.post-form.title=Перенаправление аутентификации
+saml.post-form.message=Перенаправление, пожалуйста подождите.
+
+noAccount=Новый пользователь?
+username=Имя пользователя
+usernameOrEmail=Имя пользователя или E-mail
+firstName=Имя
+givenName=Выданное имя
+fullName=Полное имя
+lastName=Фамилия
+familyName=Фамилия
+email=E-mail
+password=Пароль
+passwordConfirm=Подтверждение пароля
+passwordNew=Новый пароль
+passwordNewConfirm=Подтверждение нового пароля
+rememberMe=Запомнить меня
+authenticatorCode=Одноразовый код
+address=Адрес
+street=Улица
+locality=Город
+region=Регион
+postal_code=Почтовый индекс
+country=Страна
+emailVerified=E-mail подтвержден
+gssDelegationCredential=Делегирование учетных данных GSS
+
+logoutOtherSessions=Выполнить выход на других устройствах
+
+loginAccountTitle=Вход в учетную запись
+loginTotpStep1=Установите одно из следующих приложений на ваш мобильный телефон:
+loginTotpStep2=Откройте приложение и просканируйте QR-код:
+loginTotpStep3=Введите одноразовый код, выданный приложением, и нажмите Подтвердить для завершения настройки.
+loginTotpManualStep2=Откройте приложение и введите ключ:
+loginTotpManualStep3=Используйте следующие настройки, если приложение позволяет их устанавливать:
+loginTotpStep3DeviceName=Укажите имя устройства, которое поможет вам найти его в списке ваших устройств.
+loginTotpUnableToScan=Не удается выполнить сканирование?
+loginTotpScanBarcode=Сканировать QR-код?
+loginOtpOneTime=Одноразовый код
+loginTotpDeviceName=Имя устройства
+loginTotpType=Тип
+loginTotpAlgorithm=Алгоритм
+loginTotpDigits=Количество цифр
+loginTotpInterval=Интервал
+loginTotpCounter=Счетчик
+
+
+oauthGrantRequest=Вы согласуете доступ к этим привилегиям?
+inResource=в
+
+emailVerifyInstruction1=Вам было отправлено письмо с инструкциями для подтверждения адреса E-mail.
+emailVerifyInstruction2=Не получили письмо с кодом подтверждения?
+emailVerifyInstruction3=для повторной отправки письма.
+
+emailLinkIdpTitle=Связать {0}
+emailLinkIdp1=Вам было отправлено письмо с инструкциями по объединению {0} учетной записи {1} с вашей учетной записью {2}.
+emailLinkIdp2=Не получили код подтверждения на ваш E-mail?
+emailLinkIdp3=для повторной отправки письма.
+
+backToLogin=&laquo; Назад ко входу
+
+emailInstruction=Введите Ваше имя пользователя или E-mail и мы вышлем Вам инструкции по получению нового пароля.
+
+copyCodeInstruction=Пожалуйста, скопируйте этот код в приложение:
+
+personalInfo=Персональная информация:
+role_admin=Администратор
+role_realm-admin=Администратор realm
+role_create-realm=Создание realm
+role_create-client=Создание клиента
+role_view-realm=Просмотр realm
+role_view-users=Просмотр пользователей
+role_view-applications=Просмотр приложений
+role_view-clients=Просмотр клиентов
+role_view-events=Просмотр событий
+role_view-identity-providers=Просмотр провайдеров учетных записей
+role_manage-realm=Управление realm
+role_manage-users=Управление пользователями
+role_manage-applications=Управление приложениями
+role_manage-identity-providers=Управление провайдерами учетных записей
+role_manage-clients=Управление клиентами
+role_manage-events=Управление событиями
+role_view-profile=Просмотр профиля
+role_manage-account=Управление учетной записью
+role_read-token=Чтение токена
+role_offline-access=Оффлайн доступ
+client_account=Учетная запись
+client_security-admin-console=Консоль администратора безопасности
+client_admin-cli=Командный интерфейс администратора
+client_realm-management=Управление realm
+client_broker=Брокер
+
+invalidUserMessage=Неправильное имя пользователя или пароль.
+invalidEmailMessage=Неправильный E-mail.
+accountDisabledMessage=Учетная запись заблокирована, свяжитесь с администратором.
+accountTemporarilyDisabledMessage=Учетная запись временно заблокирована, свяжитесь с администратором или попробуйте позже.
+expiredCodeMessage=Вход просрочен по таймауту. Пожалуйста, войдите снова.
+
+missingFirstNameMessage=Пожалуйста введите имя.
+missingLastNameMessage=Пожалуйста введите фамилию.
+missingEmailMessage=Пожалуйста введите E-mail.
+missingUsernameMessage=Пожалуйста введите имя пользователя.
+missingPasswordMessage=Пожалуйста введите пароль.
+missingTotpMessage=Пожалуйста введите код аутентификатора.
+notMatchPasswordMessage=Пароли не совпадают.
+
+invalidPasswordExistingMessage=Неверный существующий пароль.
+invalidPasswordConfirmMessage=Подтверждение пароля не совпадает.
+invalidTotpMessage=Неверный код аутентификатора.
+
+usernameExistsMessage=Имя пользователя уже занято.
+emailExistsMessage=E-mail уже существует.
+
+federatedIdentityExistsMessage=Пользователь с {0} {1} уже существует. Пожалуйста войдите в управление учетными записями, чтобы связать эту учетную запись.
+
+confirmLinkIdpTitle=Учетная запись уже существует
+federatedIdentityConfirmLinkMessage=Пользователь с {0} {1} уже сущестует. Хотите продолжить?
+federatedIdentityConfirmReauthenticateMessage=Аутентифицируйтесь, чтобы связать Вашу учетную запись с {0}
+confirmLinkIdpReviewProfile=Обзор профиля
+confirmLinkIdpContinue=Добавить в существующую учетную запись
+
+configureTotpMessage=Вам необходимо настроить аутентификатор в мобильном устройстве, чтобы активировать учетную запись.
+updateProfileMessage=Вам необходимо обновить свой профиль, чтобы активировать Вашу учетную запись.
+updatePasswordMessage=Вам необходимо изменить пароль, чтобы активировать Вашу учетную запись.
+verifyEmailMessage=Вам необходимо подтвердить Ваш E-mail, чтобы активировать Вашу учетную запись.
+linkIdpMessage=Вам необходимо подтвердить Ваш E-mail, чтобы связать Вашу учетную запись с {0}.
+
+emailSentMessage=В ближайшее время Вы должны получить письмо с дальнейшими инструкциями.
+emailSendErrorMessage=Не получается отправить письмо. Пожалуйста, повторите позже.
+
+accountUpdatedMessage=Ваша учетная запись успешно обновлена.
+accountPasswordUpdatedMessage=Ваш пароль успешно обновлен.
+
+noAccessMessage=Нет доступа
+
+invalidPasswordMinLengthMessage=Некорректный пароль: длина пароля должна быть не менее {0} символов(а).
+invalidPasswordMinDigitsMessage=Некорректный пароль: пароль должен содержать не менее {0} цифр(ы).
+invalidPasswordMinLowerCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в нижнем регистре.
+invalidPasswordMinUpperCaseCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} символов(а) в верхнем регистре.
+invalidPasswordMinSpecialCharsMessage=Некорректный пароль: пароль должен содержать не менее {0} спецсимволов(а).
+invalidPasswordNotUsernameMessage=Некорректный пароль: пароль не должен совпадать с именем пользователя.
+invalidPasswordRegexPatternMessage=Некорректный пароль: пароль не прошел проверку по регулярному выражению.
+invalidPasswordHistoryMessage=Некорректный пароль: пароль не должен совпадать с последним(и) {0} паролем(ями).
+invalidPasswordGenericMessage=Некорректный пароль: новый пароль не соответствует правилам пароля.
+
+failedToProcessResponseMessage=Не удалось обработать ответ
+httpsRequiredMessage=Требуется HTTPS
+realmNotEnabledMessage=Realm не включен
+invalidRequestMessage=Неверный запрос
+failedLogout=Выйти не удалось
+unknownLoginRequesterMessage=Неизвестный клиент
+loginRequesterNotEnabledMessage=Клиент отключен
+bearerOnlyMessage=Bearer-only приложениям не разрешается инициализация входа через браузер
+standardFlowDisabledMessage=Клиенту не разрешается инициировать вход через браузер с данным response_type. Standard flow отключен для этого клиента.
+implicitFlowDisabledMessage=Клиенту не разрешается инициировать вход через браузер с данным response_type. Implicit flow отключен для этого клиента.
+invalidRedirectUriMessage=Неверный uri для переадресации
+unsupportedNameIdFormatMessage=Неподдерживаемый NameIDFormat
+invalidRequesterMessage=Неверный запрашивающий
+registrationNotAllowedMessage=Регистрация не разрешена
+resetCredentialNotAllowedMessage=Сброс идентификационных данных не разрешен
+
+permissionNotApprovedMessage=Разрешение не подтверждено.
+noRelayStateInResponseMessage=Нет изменения состояния в ответе от провайдера учетных записей.
+insufficientPermissionMessage=Недостаточно полномочий для связывания идентификаторов.
+couldNotProceedWithAuthenticationRequestMessage=Невозможно обработать аутентификационный запрос в провайдере учетных записей.
+couldNotObtainTokenMessage=Не удалось получить токен от провайдера учетных записей.
+unexpectedErrorRetrievingTokenMessage=Непредвиденная ошибка при получении токена от провайдера учетных записей.
+unexpectedErrorHandlingResponseMessage=Непредвиденная ошибка при обработке ответа от провайдера учетных записей.
+identityProviderAuthenticationFailedMessage=Аутентификация провалена. Невозможно аутентифицировать с поставщиком учетных записей.
+couldNotSendAuthenticationRequestMessage=Не получается выполнить запрос аутентификации к поставщику учетных записей.
+unexpectedErrorHandlingRequestMessage=Непредвиденная ошибка при обработке запроса аутентификации поставщика учетных записей.
+invalidAccessCodeMessage=Неверный код доступа.
+sessionNotActiveMessage=Сессия не активна.
+invalidCodeMessage=Произошла ошибка. Пожалуйста, войдите в систему снова через ваше приложение.
+identityProviderUnexpectedErrorMessage=Непредвиденная ошибка при проверке подлинности поставщика учетных записей.
+identityProviderNotFoundMessage=Не удалось найти поставщика учетных записей с данным идентификатором.
+identityProviderLinkSuccess=Ваша учетная запись была успешно соединена с {0} учетной записью {1} .
+staleCodeMessage=Эта страница больше не действительна, пожалуйста, вернитесь в приложение и снова войдите в систему.
+realmSupportsNoCredentialsMessage=Realm не поддерживает никакой тип учетных данных.
+identityProviderNotUniqueMessage=Realm поддерживает несколько поставщиков учетных записей. Не удалось определить, какой именно поставщик должен использоваться для аутентификации.
+emailVerifiedMessage=Ваш E-mail был подтвержден.
+staleEmailVerificationLink=Ссылка, по которой Вы перешли, устарела и больше не действует. Может быть, вы уже подтвердили свой E-mail?
+
+backToApplication=&laquo; Назад в приложение
+missingParameterMessage=Пропущенные параметры\: {0}
+clientNotFoundMessage=Клиент не найден.
+clientDisabledMessage=Клиент отключен.
+invalidParameterMessage=Неверный параметр\: {0}
+alreadyLoggedIn=Вы уже вошли.
diff --git a/themes/custom-theme-template/login/messages/messages_sk.properties b/themes/custom-theme-template/login/messages/messages_sk.properties
new file mode 100644
index 0000000000000000000000000000000000000000..cb4b0943f3cbbbf8f6ee2c7dce941919a16c5f62
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_sk.properties
@@ -0,0 +1,522 @@
+doLogIn=Prihlásenie
+doRegister=Registrácia
+doRegisterSecurityKey=Registrácia
+doCancel=Zrušiť
+doSubmit=Odoslať
+doBack=Späť
+doYes=Áno
+doNo=Nie
+doContinue=Pokračovať
+doIgnore=Ignorovať
+doAccept=Potvrdiť
+doDecline=Odmietnuť
+doForgotPassword=Zabudli ste heslo?
+doClickHere=Kliknite tu
+doImpersonate=Prevteliť
+doTryAgain=Skúste to znova
+doTryAnotherWay=Skúste iný spôsob
+doConfirmDelete=Potvrdiť vymazanie
+errorDeletingAccount=Pri odstraňovaní účtu došlo k chybe
+deletingAccountForbidden=Nemáte dostatočné oprávnenie na vymazanie vlastného účtu, kontaktujte administrátora.
+kerberosNotConfigured=Kerberos nie je nakonfigurovaný
+kerberosNotConfiguredTitle=Kerberos nie je nakonfigurovaný
+bypassKerberosDetail=Buď nie ste prihlásený cez Kerberos, alebo váš prehliadač nie je nastavený na prihlásenie do Kerberos. Kliknutím na tlačidlo Pokračovať sa prihláste iným spôsobom
+kerberosNotSetUp=Kerberos nie je nastavený. Nemôžete sa prihlásiť.
+registerTitle=Registrácia
+loginAccountTitle=Prihláste sa do svojho účtu
+loginTitle=Prihlásenie do {0}
+loginTitleHtml={0}
+impersonateTitle={0} prevteliť sa
+impersonateTitleHtml=<strong>{0}</strong> Prevteliť sa</strong>
+realmChoice=Realm
+unknownUser=Neznámy používateľ
+loginTotpTitle=Nastavenie mobilného autentifikátora
+loginProfileTitle=Aktualizácia informácií o účte
+loginIdpReviewProfileTitle=Aktualizácia informácií o účte
+loginTimeout=Prihlasovanie trvalo príliš dlho. Prihlasovací proces začína od začiatku.
+reauthenticate=Pre pokračovanie sa prosím prihláste znova
+oauthGrantTitle=Poskytnúť prístup {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Uistite sa, že dôverujete {0}. Zistite, ako bude {0} narábať s vašimi údajmi. 
+oauthGrantReview=Môžete si prezrieť 
+oauthGrantTos=podmienky služby.
+oauthGrantPolicy=zásady ochrany osobných údajov.
+errorTitle=Je nám ľúto ...
+errorTitleHtml=<strong>Ospravedlňujeme</strong> sa ...
+emailVerifyTitle=Overenie e-mailom
+emailForgotTitle=Zabudli ste heslo?
+updateEmailTitle=Aktualizovať e-mail 
+emailUpdateConfirmationSentTitle=Odoslaný potvrdzujúci e-mail
+emailUpdateConfirmationSent=Na adresu {0} bol odoslaný potvrdzujúci e-mail. Na dokončenie aktualizácie e-mailu postupujte podľa pokynov.
+emailUpdatedTitle=Email aktualizovaný
+emailUpdated=Email účtu bol úspešne aktualizovaný na {0}.
+updatePasswordTitle=Aktualizácia hesla
+codeSuccessTitle=Kód úspechu
+codeErrorTitle=Kód chyby\: {0}
+displayUnsupported=Nepodporovaný typ displeja 
+browserRequired=Pre prihlásenie je potrebný prehliadač
+browserContinue=Pre dokončenie prihlásenia je potrebný prehliadač
+browserContinuePrompt=Otvoriť prehliadač a pokračovať v prihlasovaní? [a/n]:
+browserContinueAnswer=a
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=Interný 
+unknown=Neznámy
+
+termsTitle=Zmluvné podmienky
+termsText=<p>Zmluvné podmienky, ktoré sa majú definovať</p>
+termsPlainText=Podmienky, ktoré sa majú definovať. 
+termsAcceptanceRequired=Musíte súhlasiť s našimi podmienkami.
+acceptTerms=Súhlasím s podmienkami
+
+recaptchaFailed=Neplatné Recaptcha
+recaptchaNotConfigured=Recaptcha sa vyžaduje, ale nie je nakonfigurovaná
+consentDenied=Súhlas bol zamietnutý.
+
+noAccount=Nový používateľ?
+username=Prihlasovacie meno
+usernameOrEmail=Prihlasovacie meno alebo e-mail
+firstName=Meno
+givenName=Meno pri narodení
+fullName=Celé meno
+lastName=Priezvisko
+familyName=Rodné meno
+email=E-mail
+password=Heslo
+passwordConfirm=Potvrdenie hesla
+passwordNew=Nové heslo
+passwordNewConfirm=Potvrdenie nového hesla
+hidePassword=Skryť heslo
+showPassword=Zobraziť heslo
+rememberMe=Zapamätať si ma
+authenticatorCode=Jednorazový kód
+address=Adresa
+street=Ulica
+locality=Mesto alebo lokalita
+region=Kraj
+postal_code=PSČ
+country=Štát
+emailVerified=E-mail overený
+website=Webová stránka 
+phoneNumber=Telefónne číslo
+phoneNumberVerified=Overené telefónne číslo
+gender=Pohlavie
+birthday=Dátum narodenia
+zoneinfo=Časové pásmo
+gssDelegationCredential=GSS delegované oprávnenie
+logoutOtherSessions=Odhlásenie z iných zariadení 
+
+profileScopeConsentText=Profil používateľa 
+emailScopeConsentText=Emailová adresa
+addressScopeConsentText=Adresa
+phoneScopeConsentText=Telefónne číslo
+offlineAccessScopeConsentText=Offline prístup
+samlRoleListScopeConsentText=Moje role
+rolesScopeConsentText=Užívateľské roly
+
+restartLoginTooltip=Znovu spustiť prihlásenie
+
+loginTotpIntro=Pre prístup k tomuto účtu je potrebné nastaviť generátor jednorazových kódov
+loginTotpStep1=Nainštalujte <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> alebo Google Authenticator na mobil. Obidve aplikácie sú k dispozícii v <a href="https://play.google.com">Google Play</a> a Apple App Store.
+loginTotpStep2=Otvorte aplikáciu a skenujte čiarový kód alebo zadajte kľúč
+loginTotpStep3=Zadajte jednorazový kód poskytnutý aplikáciou a kliknutím na tlačidlo Odoslať dokončite nastavenie
+loginTotpStep3DeviceName=Uveďte názov zariadenia, ktorý vám pomôže spravovať zariadenia OTP. 
+loginTotpManualStep2=Otvorte aplikáciu a zadajte kľúč
+loginTotpManualStep3=Používajte nasledujúce hodnoty konfigurácie, ak aplikácia umožňuje ich nastavenie
+loginTotpUnableToScan=Nemožno skenovať?
+loginTotpScanBarcode=Skenovať čiarový kód?
+loginCredential=Prihlasovacie údaje 
+loginOtpOneTime=Jednorazový kód
+loginTotpType=Typ
+loginTotpAlgorithm=Algoritmus
+loginTotpDigits=Číslica
+loginTotpInterval=Interval
+loginTotpCounter=Počítadlo
+loginTotpDeviceName=Názov zariadenia 
+
+loginTotp.totp=Založené na čase
+loginTotp.hotp=Založené na počítadle
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=Vyberte spôsob prihlásenia
+
+oauthGrantRequest=Udeľujete tieto prístupové oprávnenia?
+inResource=v
+
+oauth2DeviceVerificationTitle=Prihlásenie zariadenia 
+verifyOAuth2DeviceUserCode=Zadajte kód poskytnutý vaším zariadením a kliknite na tlačidlo Odoslať
+oauth2DeviceInvalidUserCodeMessage=Neplatný kód, skúste to prosím znova.
+oauth2DeviceExpiredUserCodeMessage=Kód stratil platnosť. Vráťte sa prosím k svojmu zariadeniu a skúste sa pripojiť znova.
+oauth2DeviceVerificationCompleteHeader=Úspešné prihlásenie zariadenia
+oauth2DeviceVerificationCompleteMessage=Môžete zavrieť toto okno prehliadača a vrátiť sa k svojmu zariadeniu.
+oauth2DeviceVerificationFailedHeader=Prihlásenie zariadenia zlyhalo
+oauth2DeviceVerificationFailedMessage=Môžete zavrieť toto okno prehliadača, vrátiť sa k svojmu zariadeniu a skúsiť sa pripojiť znova.
+oauth2DeviceConsentDeniedMessage=Súhlas s pripojením zariadenia zamietnutý.
+oauth2DeviceAuthorizationGrantDisabledMessage=Klientovi nie je povolené iniciovať OAuth 2.0 Device Authorization Grant. Tento flow je pre klienta zakázaný.
+
+emailVerifyInstruction1=Bol Vám odoslaný e-mail s pokynmi na overenie vašej e-mailovej adresy.
+emailVerifyInstruction2=Nezískali ste v e-maile overovací kód?
+emailVerifyInstruction3=opätovne odoslať e-mail.
+
+emailLinkIdpTitle=Odkaz {0}
+emailLinkIdp1=Bol vám odoslaný e-mail s pokynmi na prepojenie účtu {0} {1} s vaším účtom {2}.
+emailLinkIdp2=Nezískali ste v e-maile overovací kód?
+emailLinkIdp3=opätovne poslať e-mail.
+emailLinkIdp4=Ak ste už overili e-mail v inom prehliadači
+emailLinkIdp5=pokračovať.
+
+backToLogin=&laquo; Späť na prihlásenie
+
+emailInstruction=Zadajte svoje používateľské meno alebo e-mailovú adresu a my vám zašleme pokyny na vytvorenie nového hesla.
+emailInstructionUsername=Zadajte svoje používateľské meno a my vám zašleme pokyny na vytvorenie nového hesla.
+
+copyCodeInstruction=Prosím skopírujte tento kód a vložte ho do vašej aplikácie:
+
+pageExpiredTitle=Platnosť stránky vypršala
+pageExpiredMsg1=Pre reštartovanie prihlasovacieho procesu
+pageExpiredMsg2=Pokračovanie prihlasovacieho procesu
+
+personalInfo=Osobné informácie:
+role_admin=Administrátor
+role_realm-admin=Realm administrátor
+role_create-realm=Vytvoriť realm
+role_create-client=Vytvoriť klienta
+role_view-realm=Zobraziť realm
+role_view-users=Zobraziť používateľov
+role_view-applications=Zobraziť aplikácie
+role_view-clients=Zobrazenie klientov
+role_view-events=Zobraziť udalosti
+role_view-identity-providers=Zobrazenie poskytovateľov identity
+role_manage-realm=Spravovať realm
+role_manage-users=Spravovať používateľov
+role_manage-applications=Spravovať aplikácie
+role_manage-identity-providers=Spravovať poskytovateľov identity
+role_manage-clients=Spravovať klientov
+role_manage-events=Spravovať udalosti
+role_view-profile=Zobraziť profil
+role_manage-account=Spravovať účty
+role_manage-account-links=Spravovať odkazy na účty
+role_read-token=Čítať token
+role_offline-access=Offline prístup
+client_account=Účet klienta
+client_account-console=Užívateľská konzola
+client_security-admin-console=Administrátorská bezpečnostná konzola klienta
+client_admin-cli=Správca CLI
+client_realm-management=Správa realmov klienta
+client_broker=Broker
+
+requiredFields=Povinné polia 
+
+invalidUserMessage=Neplatné používateľské meno alebo heslo.
+invalidUsernameMessage=Neplatné používateľské meno. 
+invalidUsernameOrEmailMessage=Neplatné používateľské meno alebo e-mail.
+invalidPasswordMessage=Neplatné heslo.
+invalidEmailMessage=Neplatná e-mailová adresa.
+accountDisabledMessage=Účet je zakázaný, kontaktujte administrátora.
+accountTemporarilyDisabledMessage=Účet je dočasne zakázaný, kontaktujte administrátora alebo skúste neskôr.
+expiredCodeMessage=Platnosť prihlásenia vypršala. Prihláste sa znova.
+expiredActionMessage=Akcia vypršala. Pokračujte prihlásením.
+expiredActionTokenNoSessionMessage=Akcia vypršala.
+expiredActionTokenSessionExistsMessage=Platnosť vypršala. Začnite znova.
+sessionLimitExceeded=Prekročený limit relácií 
+
+missingFirstNameMessage=Zadajte krstné meno.
+missingLastNameMessage=Zadajte priezvisko.
+missingEmailMessage=Zadajte e-mail.
+missingUsernameMessage=Zadajte používateľské meno.
+missingPasswordMessage=Zadajte prosím heslo.
+missingTotpMessage=Prosím, zadajte kód autentifikátora.
+missingTotpDeviceNameMessage=Prosím, zadajte názov zariadenia. 
+notMatchPasswordMessage=Heslá sa nezhodujú.
+
+error-invalid-value=Neplatná hodnota. 
+error-invalid-blank=Prosím uveďte hodnotu.
+error-empty=Prosím uveďte hodnotu.
+error-invalid-length=Dĺžka musí byť medzi {1} a {2}.
+error-invalid-length-too-short=Minimálna dĺžka je {1}.
+error-invalid-length-too-long=Maximálna dĺžka je {2}.
+error-invalid-email=Neplatná e-mailová adresa.
+error-invalid-number=Neplatné číslo.
+error-number-out-of-range=Číslo musí byť medzi {1} a {2}.
+error-number-out-of-range-too-small=Číslo musí mať minimálnu hodnotu {1}.
+error-number-out-of-range-too-big=Číslo musí mať maximálnu hodnotu {2}.
+error-pattern-no-match=Neplatná hodnota.
+error-invalid-uri=Neplatná adresa URL.
+error-invalid-uri-scheme=Neplatná schéma URL.
+error-invalid-uri-fragment=Neplatný fragment URL.
+error-user-attribute-required=Prosím, uveďte toto pole.
+error-invalid-date=Neplatný dátum.
+error-user-attribute-read-only=Toto pole je určené len na čítanie.
+error-username-invalid-character=Hodnota obsahuje neplatný znak.
+error-person-name-invalid-character=Hodnota obsahuje neplatný znak.
+error-reset-otp-missing-id=Prosím, vyberte konfiguráciu OTP.
+
+invalidPasswordExistingMessage=Neplatné existujúce heslo.
+invalidPasswordBlacklistedMessage=Neplatné heslo: heslo je na čiernej listine.
+invalidPasswordConfirmMessage=Potvrdenie hesla sa nezhoduje.
+invalidTotpMessage=Neplatný kód autentifikátora.
+
+usernameExistsMessage=Užívateľské meno už existuje.
+emailExistsMessage=E-mail už existuje.
+
+federatedIdentityExistsMessage=Používateľ s {0} {1} už existuje. Ak chcete prepojiť účet, prihláste sa na správu účtov.
+federatedIdentityUnavailableMessage=Používateľ {0} autentifikovaný poskytovateľom identity {1} neexistuje. Kontaktujte svojho administrátora.
+federatedIdentityUnmatchedEssentialClaimMessage=Identifikačný token vydaný poskytovateľom identity sa nezhoduje s nakonfigurovaným essential claim. Obráťte sa na svojho správcu.
+
+confirmLinkIdpTitle=Účet už existuje
+federatedIdentityConfirmLinkMessage=Používateľ s {0} {1} už existuje. Ako chcete pokračovať?
+federatedIdentityConfirmReauthenticateMessage=Overiť prepojiť váš účet s {0}
+nestedFirstBrokerFlowMessage=Užívateľ {0} {1} nie je prepojený so žiadnym známym používateľom.
+confirmLinkIdpReviewProfile=Skontrolujte profil
+confirmLinkIdpContinue=Pridať do existujúceho účtu
+
+configureTotpMessage=Na aktiváciu vášho účtu musíte nastaviť aplikáciu Mobile Authenticator.
+configureBackupCodesMessage=Pre aktiváciu vášho účtu musíte nastaviť záložné kódy.
+updateProfileMessage=Ak chcete aktivovať svoj účet, musíte aktualizovať svoj užívateľský profil.
+updatePasswordMessage=Ak chcete aktivovať svoj účet, musíte zmeniť heslo.
+updateEmailMessage=Pre aktiváciu účtu musíte aktualizovať svoju e-mailovú adresu.
+resetPasswordMessage=Potrebujete zmeniť svoje heslo.
+verifyEmailMessage=Ak chcete aktivovať svoj účet, musíte overiť svoju e-mailovú adresu.
+linkIdpMessage=Potrebujete si overiť svoju e-mailovú adresu a prepojiť svoj účet s {0}.
+
+emailSentMessage=Zakrátko by ste mali dostať e-mail s ďalšími pokynmi.
+emailSendErrorMessage=Nepodarilo sa odoslať e-mail, skúste to znova neskôr.
+
+accountUpdatedMessage=Váš účet bol aktualizovaný.
+accountPasswordUpdatedMessage=Vaše heslo bolo aktualizované.
+
+delegationCompleteHeader=Úspešné prihlásenie
+delegationCompleteMessage=Môžete zavrieť toto okno prehliadača a vrátiť sa do konzolovej aplikácie.
+delegationFailedHeader=Prihlásenie zlyhalo
+delegationFailedMessage=Môžete zavrieť toto okno prehliadača, vrátiť sa do konzolovej aplikácie a skúsiť sa prihlásiť znova.
+
+noAccessMessage=Žiadny prístup
+
+invalidPasswordMinLengthMessage=Neplatné heslo: minimálna dĺžka {0}.
+invalidPasswordMaxLengthMessage=Neplatné heslo: maximálna dĺžka {0}.
+invalidPasswordMinDigitsMessage=Neplatné heslo: musí obsahovať aspoň {0} číslic.
+invalidPasswordMinLowerCaseCharsMessage=Neplatné heslo: musí obsahovať minimálne {0} malé písmená.
+invalidPasswordMinUpperCaseCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} veľké písmená.
+invalidPasswordMinSpecialCharsMessage=Neplatné heslo: musí obsahovať aspoň {0} špeciálne znaky.
+invalidPasswordNotUsernameMessage=Neplatné heslo: nesmie byť rovnaké ako používateľské meno.
+invalidPasswordNotEmailMessage=Neplatné heslo: nesmie sa rovnať e-mailu.
+invalidPasswordRegexPatternMessage=Neplatné heslo: nezhoduje sa vzormi regulárneho výrazu.
+invalidPasswordHistoryMessage=Neplatné heslo: nesmie sa rovnať žiadnemu z posledných {0} hesiel.
+invalidPasswordGenericMessage=Neplatné heslo: nové heslo nezodpovedá pravidlám hesiel.
+
+failedToProcessResponseMessage=Nepodarilo sa spracovať odpoveď
+httpsRequiredMessage=Vyžaduje sa HTTPS
+realmNotEnabledMessage=Realm nie je povolený
+invalidRequestMessage=Neplatná požiadavka
+successLogout=Odhlásili ste sa
+failedLogout=Odhlásenie zlyhalo
+unknownLoginRequesterMessage=Neznámy žiadateľ o prihlásenie
+loginRequesterNotEnabledMessage=Žiadateľ o prihlásenie nie je povolený
+bearerOnlyMessage=Aplikácie bearer-only nesmú inicializovať prihlásenie pomocou prehliadača
+standardFlowDisabledMessage=Klient nesmie iniciovať prihlásenie do prehliadača s daným typom odpovede. Štandardný tok je pre klienta zakázaný.
+implicitFlowDisabledMessage=Klient nemôže iniciovať prihlásenie do prehliadača s daným typom odpovede. Implicitný tok je pre klienta zakázaný.
+invalidRedirectUriMessage=Neplatné redirect uri
+unsupportedNameIdFormatMessage=Nepodporovaný NameIDFormat
+invalidRequesterMessage=Neplatný žiadateľ
+registrationNotAllowedMessage=Registrácia nie je povolená
+resetCredentialNotAllowedMessage=Obnovenie poverenia nie je povolené
+
+permissionNotApprovedMessage=Povolenie nie je schválené.
+noRelayStateInResponseMessage=Neexistuje relay state v odpovedi od poskytovateľa identity.
+insufficientPermissionMessage=Nedostatočné povolenia na prepojenie identít.
+couldNotProceedWithAuthenticationRequestMessage=Nemožno pokračovať s požiadavkou na autentifikáciu poskytovateľa identity.
+couldNotObtainTokenMessage=Nemožno získať token od poskytovateľa identity.
+unexpectedErrorRetrievingTokenMessage=Neočakávaná chyba pri získavaní tokenu od poskytovateľa identity.
+unexpectedErrorHandlingResponseMessage=Neočakávaná chyba pri spracovaní odpovede od poskytovateľa identity.
+identityProviderAuthenticationFailedMessage=Overenie zlyhalo. Nepodarilo sa autentizovať s poskytovateľom identity.
+couldNotSendAuthenticationRequestMessage=Nemožno odoslať žiadosť o autentifikáciu poskytovateľovi identity.
+unexpectedErrorHandlingRequestMessage=Neočakávaná chyba pri spracovaní žiadosti o autentifikáciu poskytovateľovi identity.
+invalidAccessCodeMessage=Neplatný prístupový kód.
+sessionNotActiveMessage=Session nie je aktívna.
+invalidCodeMessage=Vyskytla sa chyba, prihláste sa znova prostredníctvom svojej aplikácie.
+cookieNotFoundMessage=Súbor cookie nebol nájdený. Uistite sa, že sú vo vašom prehliadači povolené súbory cookie.
+insufficientLevelOfAuthentication=Požadovaná úroveň overenia nebola splnená.
+identityProviderUnexpectedErrorMessage=Neočakávaná chyba pri autentifikácii s poskytovateľom identity
+identityProviderMissingStateMessage=V odpovedi poskytovateľa identity chýba parameter state.
+identityProviderMissingCodeOrErrorMessage=V odpovedi poskytovateľa identity chýba parameter code alebo error.
+identityProviderInvalidResponseMessage=Neplatná odpoveď od poskytovateľa identity.
+identityProviderInvalidSignatureMessage=Neplatný podpis v odpovedi od poskytovateľa identity.
+identityProviderNotFoundMessage=Nepodarilo sa nájsť poskytovateľa identity s identifikátorom.
+identityProviderLinkSuccess=Svoj e-mail ste úspešne overili. Vráťte sa späť do pôvodného prehliadača a pokračujte tam s prihlasovacími údajmi.
+staleCodeMessage=Táto stránka už nie je platná, vráťte sa späť do aplikácie a znova sa prihláste
+realmSupportsNoCredentialsMessage=Realm nepodporuje žiadny typ poverenia.
+credentialSetupRequired=Nie je môžné sa prihlásiť, vyžaduje sa nastavenie prihlasovacích údajov.
+identityProviderNotUniqueMessage=Realm podporuje viacerých poskytovateľov identity. Nepodarilo sa určiť, ktorý poskytovateľ totožnosti sa má používať na autentifikáciu.
+emailVerifiedMessage=Vaša e-mailová adresa bola overená.
+emailVerifiedAlreadyMessage=Vaša e-mailová adresa už bola overená.
+staleEmailVerificationLink=Odkaz, na ktorý ste klikli, je starý odkaz a už nie je platný. Možno ste už overili svoj e-mail?
+identityProviderAlreadyLinkedMessage=Federatívna identita vrátená {0} je už prepojená s iným používateľom.
+confirmAccountLinking=Potvrďte prepojenie účtu {0} poskytovateľa totožnosti {1} s vaším účtom.
+confirmEmailAddressVerification=Potvrďte platnosť e-mailovej adresy {0}.
+confirmExecutionOfActions=Vykonajte nasledujúce akcie
+
+#locale_ar=عربي
+#locale_ca=Català
+#locale_cs=Čeština
+#locale_da=Dansk
+#locale_de=Deutsch
+#locale_en=English
+#locale_es=Español
+#locale_fi=Suomi
+#locale_fr=Français
+#locale_hu=Magyar
+#locale_it=Italiano
+#locale_ja=日本語
+#locale_lt=Lietuvių
+#locale_lv=Latviešu
+#locale_nl=Nederlands
+#locale_no=Norsk
+#locale_pl=Polski
+#locale_pt_BR=Português (Brasil)
+#locale_ru=Русский
+#locale_sk=Slovenčina
+#locale_sv=Svenska
+#locale_th=ไทย
+#locale_tr=Türkçe
+#locale_zh-CN=中文简体
+
+backToApplication=&laquo; Späť na aplikáciu
+missingParameterMessage=Chýbajúce parametre : {0}
+clientNotFoundMessage=Klient sa nenašiel.
+clientDisabledMessage=Klient bol zneplatnený.
+invalidParameterMessage=Neplatný parameter : {0}
+alreadyLoggedIn=Už ste prihlásený.
+differentUserAuthenticated=V tejto relácii ste už boli overení ako iný používateľ '' {0} ''. Najskôr sa odhláste.
+brokerLinkingSessionExpired=Požadované prepojenie s účtom brokera, ale aktuálna relácia už nie je platná.
+proceedWithAction=&raquo; Ak chcete pokračovať, kliknite sem
+acrNotFulfilled=Nesplnené požiadavky na overenie
+
+requiredAction.CONFIGURE_TOTP=Konfigurácia OTP
+requiredAction.TERMS_AND_CONDITIONS=Zmluvné podmienky
+requiredAction.UPDATE_PASSWORD=Aktualizovať heslo
+requiredAction.UPDATE_PROFILE=Aktualizovať profil
+requiredAction.VERIFY_EMAIL=Overiť e-mail
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Generovať kódy obnovy
+requiredAction.webauthn-register-passwordless=Webauthn Passwordless Registrácia
+
+invalidTokenRequiredActions=Požadované akcie zahrnuté v odkaze nie sú platné
+
+doX509Login=Budete prihlásení ako\:
+clientCertificate=certifikát klienta X509\:
+noCertificate=[Bez certifikátu]
+
+
+pageNotFound=Stránka nebola nájdená
+internalServerError=Vyskytla sa interná chyba servera
+
+console-username=Používateľské meno:
+console-password=Heslo:
+console-otp=Jednorazové heslo:
+console-new-password=Nové heslo:
+console-confirm-password=Potvrdiť heslo:
+console-update-password=Vyžaduje sa aktualizácia hesla.
+console-verify-email=Potrebujete overiť svoju e-mailovú adresu. Odoslali sme e-mail na adresu {0}, ktorý obsahuje overovací kód. Zadajte tento kód do poľa nižšie.
+console-email-code=Emailový kód:
+console-accept-terms=Prijímate podmienky? [a/n]:
+console-accept=a
+
+# Openshift messages
+openshift.scope.user_info=Informácie o používateľovi
+openshift.scope.user_check-access=Informácie o prístupe používateľa
+openshift.scope.user_full=Plný prístup
+openshift.scope.list-projects=Zoznam projektov
+
+# SAML authentication
+saml.post-form.title=Presmerovanie overenia
+saml.post-form.message=Presmerovanie, počkajte prosím.
+saml.post-form.js-disabled=JavaScript je vypnutý. Dôrazne odporúčame ho zapnúť. Ak chcete pokračovať, kliknite na tlačidlo nižšie. 
+saml.artifactResolutionServiceInvalidResponse=Rozpoznanie SAML Artefaktu zlyhalo.
+
+#authenticators
+otp-display-name=Authenticator Application
+otp-help-text=Zadajte overovací kód z aplikácie autentifikátora.
+otp-reset-description=Ktorú konfiguráciu OTP treba odstrániť?
+password-display-name=Heslo
+password-help-text=Prihlásenie zadaním hesla.
+auth-username-form-display-name=Používateľské meno
+auth-username-form-help-text=Začnite prihlasovanie zadaním svojho používateľského mena
+auth-username-password-form-display-name=Používateľské meno a heslo
+auth-username-password-form-help-text=Prihláste sa zadaním svojho používateľského mena a hesla.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Overovací kód pre obnovenie
+auth-recovery-authn-code-form-help-text=Zadajte overovací kód obnovy z vopred vygenerovaného zoznamu.
+auth-recovery-code-info-message=Zadajte zadaný kód obnovy.
+auth-recovery-code-prompt=Kód obnovy #{0}
+auth-recovery-code-header=Prihlásenie pomocou overovacieho kódu obnovy
+recovery-codes-error-invalid=Neplatný overovací kód obnovy
+recovery-code-config-header=Overovacie kódy obnovy
+recovery-code-config-warning-title=Tieto kódy obnovenia sa po opustení tejto stránky už nezobrazia
+recovery-code-config-warning-message=Uistite sa, že ste si ich vytlačili, stiahli alebo skopírovali do správcu hesiel a uložili. Zrušenie tohto nastavenia odstráni tieto kódy na obnovenie z vášho účtu.
+recovery-codes-print=Tlačiť
+recovery-codes-download=Stiahnuť
+recovery-codes-copy=Kopírovať
+recovery-codes-copied=Kopírovať
+recovery-codes-confirmation-message=Uložil som tieto kódy na bezpečné miesto
+recovery-codes-action-complete=Ukončiť nastavenie
+recovery-codes-action-cancel=Zrušiť nastavenie
+recovery-codes-download-file-header=Uchovajte tieto kódy na obnovu na bezpečnom mieste.
+recovery-codes-download-file-description=Kódy na obnovenie sú jednorázové prístupové kódy, ktoré vám umožnia prihlásiť sa do vášho účtu, ak nemáte prístup k autentifikátoru.
+recovery-codes-download-file-date=Tieto kódy boli vygenerované dňa
+recovery-codes-label-default=Kódy na obnovenie
+
+# WebAuthn
+webauthn-display-name=Bezpečnostný kľúč
+webauthn-help-text=Použite svoj bezpečnostný kľúč na prihlásenie.
+webauthn-passwordless-display-name=Bezpečnostný kľúč
+webauthn-passwordless-help-text=Použite svoj bezpečnostný kľúč na prihlásenie bez hesla.
+webauthn-login-title=Prihlásenie bezpečnostným kľúčom
+webauthn-registration-title=Registrácia bezpečnostným kľúčom
+webauthn-available-authenticators=Dostupné bezpečnostné kľúče
+webauthn-unsupported-browser-text=WebAuthn nie je podporovaný týmto prehliadačom. Skúste iný alebo kontaktujte svojho administrátora.
+webauthn-doAuthenticate=Prihlásenie pomocou bezpečnostného kľúča
+webauthn-createdAt-label=Vytvorené
+
+# WebAuthn Error
+webauthn-error-title=Chybný bezpečnostný kľúč
+webauthn-error-registration=Nepodarilo sa zaregistrovať bezpečnostný kľúč.<br/> {0}
+webauthn-error-api-get=Nepodarilo sa overiť pomocou bezpečnostného kľúča.<br/> {0}
+webauthn-error-different-user=Prvý overený používateľ nie je ten, ktorý bol overený bezpečnostným kľúčom.
+webauthn-error-auth-verification=Výsledok overenia bezpečnostného kľúča je neplatný.<br/> {0}
+webauthn-error-register-verification=Výsledok registrácie bezpečnostného kľúča je neplatný.<br/> {0}
+webauthn-error-user-not-found=Neznámy používateľ overený bezpečnostným kľúčom.
+
+# Identity provider
+identity-provider-redirector=Pripojenie k inému poskytovateľovi identít
+identity-provider-login-label=Prihláste sa pomocou
+idp-email-verification-display-name=Overenie e-mailu
+idp-email-verification-help-text=Pripojte svoj účet overením e-mailu.
+idp-username-password-form-display-name=Prihlasovacie meno a heslo
+idp-username-password-form-help-text=Pripojte svoj účet prihlásením.
+
+finalDeletionConfirmation=Ak vymažete svoj účet, nebude možné ho obnoviť. Ak si chcete účet ponechať, kliknite na tlačidlo Zrušiť.
+irreversibleAction=Táto akcia je nezvratná
+deleteAccountConfirm=Potvrdenie odstránenia účtu
+
+deletingImplies=Odstránenie vášho účtu znamená:
+errasingData=Vymazanie všetkých vašich údajov
+loggingOutImmediately=Okamžité odhlásenie
+accountUnusable=Žiadne ďalšie použitie aplikácie nebude s týmto účtom možné
+userDeletedSuccessfully=Užívateľ bol úspešne odstránený
+
+access-denied=Prístup zamietnutý
+access-denied-when-idp-auth=Prístup zamietnutý pri overovaní pomocou {0}
+
+frontchannel-logout.title=Odhlásenie
+frontchannel-logout.message=Odhlasujete sa z nasledujúcich aplikácií
+logoutConfirmTitle=Odhlásenie
+logoutConfirmHeader=Chcete sa odhlásiť?
+doLogout=Odhlásiť
+
+readOnlyUsernameMessage=Nemôžete aktualizovať svoje používateľské meno, pretože je iba na čítanie.
diff --git a/themes/custom-theme-template/login/messages/messages_sv.properties b/themes/custom-theme-template/login/messages/messages_sv.properties
new file mode 100755
index 0000000000000000000000000000000000000000..a926d8ba6e63071386185c3763578f4b32feb57b
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_sv.properties
@@ -0,0 +1,214 @@
+doLogIn=Logga in
+doRegister=Registrera
+doRegisterSecurityKey=Registrera
+doCancel=Avbryt
+doSubmit=Skicka
+doYes=Ja
+doNo=Nej
+doContinue=Fortsätt
+doAccept=Acceptera
+doDecline=Avböj
+doForgotPassword=Glömt lösenord?
+doClickHere=Klicka här
+doImpersonate=Imitera
+kerberosNotConfigured=Kerberos är inte konfigurerat
+kerberosNotConfiguredTitle=Kerberos är inte konfigurerat
+bypassKerberosDetail=Antingen så är du inte inloggad via Kerberos eller så är inte din webbläsare inställd för Kerberosinloggning. Vänligen klicka på fortsätt för att logga in på annat sätt.
+kerberosNotSetUp=Kerberos är inte inställt. Du kan inte logga in.
+registerWithTitle=Registrera med {0}
+registerWithTitleHtml={0}
+loginTitle=Logga in till {0}
+loginTitleHtml={0}
+impersonateTitle={0} Imitera användare
+impersonateTitleHtml=<strong>{0}</strong> Imitera användare
+realmChoice=Realm
+unknownUser=Okänd användare
+loginTotpTitle=Inställning av mobilautentiserare
+loginProfileTitle=Uppdatera kontoinformation
+loginTimeout=Det tog för lång tid att logga in. Inloggningsprocessen börjar om.
+oauthGrantTitle=Bevilja åtkomst
+oauthGrantTitleHtml={0}
+errorTitle=Vi ber om ursäkt...
+errorTitleHtml=Vi ber om <strong>ursäkt</strong> ...
+emailVerifyTitle=E-postverifiering
+emailForgotTitle=Glömt ditt lösenord?
+updatePasswordTitle=Uppdatera lösenord
+codeSuccessTitle=Rätt kod
+codeErrorTitle=Felkod\: {0}
+
+termsTitle=Användarvillkor
+termsTitleHtml=Användarvillkor
+termsText=<p>Användarvillkoren har ännu inte definierats</p>
+
+recaptchaFailed=Ogiltig Recaptcha
+recaptchaNotConfigured=Recaptcha krävs, men är inte inställd
+consentDenied=Samtycke förnekat.
+
+noAccount=Ny användare?
+username=Användarnamn
+usernameOrEmail=Användarnamn eller e-post
+firstName=Förnamn
+lastName=Efternamn
+email=E-post
+password=Lösenord
+passwordConfirm=Bekräfta lösenord
+passwordNew=Nytt lösenord
+passwordNewConfirm=Bekräftelse av nytt lösenord
+rememberMe=Kom ihåg mig
+authenticatorCode=Engångskod
+address=Adress
+street=Gata
+locality=Postort
+region=Stat, Provins eller Region
+postal_code=Postnummer
+country=Land
+emailVerified=E-post verifierad
+gssDelegationCredential=GSS Delegation Credential
+
+loginTotpStep1=Installera <a href="https://freeotp.github.io/" target="_blank">FreeOTP</a> eller Google Authenticator på din mobil. Båda applikationerna finns tillgängliga hos <a href="https://play.google.com">Google Play</a> och Apple App Store.
+loginTotpStep2=Öppna applikationen och skanna streckkoden eller skriv i nyckeln
+loginTotpStep3=Fyll i engångskoden som tillhandahålls av applikationen och klicka på Spara för att avsluta inställningarna
+loginOtpOneTime=Engångskod
+
+oauthGrantRequest=Godkänner du tillgång till de här rättigheterna?
+inResource=i
+
+emailVerifyInstruction1=Ett e-postmeddelande med instruktioner om hur du verifierar din e-postadress har skickats till dig.
+emailVerifyInstruction2=Har du inte fått en verifikationskod i din e-post?
+emailVerifyInstruction3=för att skicka e-postmeddelandet igen.
+
+emailLinkIdpTitle=Länkning {0}
+emailLinkIdp1=Ett e-postmeddelande med instruktioner om hur du länkar {0} kontot {1} med ditt {2} konto har skickats till dig.
+emailLinkIdp2=Har du inte fått en verifikationskod i din e-post?
+emailLinkIdp3=för att skicka e-postmeddelandet igen.
+
+backToLogin=&laquo; Tillbaka till inloggningen
+
+emailInstruction=Fyll i ditt användarnamn eller din e-postadress, så kommer vi att skicka instruktioner för hur du skapar ett nytt lösenord.
+
+copyCodeInstruction=Vänligen kopiera den här koden och klistra in den i din applikation:
+
+personalInfo=Personlig information:
+role_admin=Administratör
+role_realm-admin=Realm-administratör
+role_create-realm=Skapa realm
+role_create-client=Skapa klient
+role_view-realm=Visa realm
+role_view-users=Visa användare
+role_view-applications=Visa applikationer
+role_view-clients=Visa klienter
+role_view-events=Visa event
+role_view-identity-providers=Visa identitetsleverantörer
+role_manage-realm=Hantera realm
+role_manage-users=Hantera användare
+role_manage-applications=Hantera applikationer
+role_manage-identity-providers=Hantera identitetsleverantörer
+role_manage-clients=Hantera klienter
+role_manage-events=Hantera event
+role_view-profile=Visa profil
+role_manage-account=Hantera konto
+role_read-token=Läs element
+role_offline-access=Åtkomst offline
+client_account=Konto
+client_security-admin-console=Säkerhetsadministratörskonsol
+client_admin-cli=Administratörs-CLI
+client_realm-management=Realmhantering
+
+invalidUserMessage=Ogiltigt användarnamn eller lösenord.
+invalidEmailMessage=Ogiltig e-postadress.
+accountDisabledMessage=Kontot är inaktiverat, kontakta administratör.
+accountTemporarilyDisabledMessage=Kontot är tillfälligt inaktiverat, kontakta administratör eller försök igen senare.
+expiredCodeMessage=Inloggningen nådde en maxtidsgräns. Vänligen försök igen.
+
+missingFirstNameMessage=Vänligen ange förnamn.
+missingLastNameMessage=Vänligen ange efternamn.
+missingEmailMessage=Vänligen ange e-post.
+missingUsernameMessage=Vänligen ange användarnamn.
+missingPasswordMessage=Vänligen ange lösenord.
+missingTotpMessage=Vänligen ange autentiseringskod.
+notMatchPasswordMessage=Lösenorden matchar inte.
+
+invalidPasswordExistingMessage=Det nuvarande lösenordet är ogiltigt.
+invalidPasswordConfirmMessage=Lösenordsbekräftelsen matchar inte.
+invalidTotpMessage=Autentiseringskoden är ogiltig.
+
+usernameExistsMessage=Användarnamnet finns redan.
+emailExistsMessage=E-postadressen finns redan.
+
+federatedIdentityExistsMessage=Användare med {0} {1} finns redan. Vänligen logga in till kontohanteringen för att länka kontot.
+
+confirmLinkIdpTitle=Kontot finns redan
+federatedIdentityConfirmLinkMessage=Användare med {0} {1} finns redan, Hur vill du fortsätta?
+federatedIdentityConfirmReauthenticateMessage=Autentisera för att länka ditt konto med {0}
+confirmLinkIdpReviewProfile=Granska profil
+confirmLinkIdpContinue=Lägg till i existerande konto
+
+configureTotpMessage=Du behöver konfigurera mobilautentiseraren för att aktivera ditt konto.
+updateProfileMessage=Du behöver uppdatera din användarprofil för att aktivera ditt konto.
+updatePasswordMessage=Du behöver byta ditt lösenord för att aktivera ditt konto.
+verifyEmailMessage=Du behöver verifiera din e-postadress för att aktivera ditt konto.
+linkIdpMessage=Du behöver verifiera din e-postadress för att länka ditt konto med {0}.
+
+emailSentMessage=Du bör inom kort motta ett e-postmeddelande med ytterligare instruktioner.
+emailSendErrorMessage=E-postmeddelandet kunde inte skickas, försök igen senare.
+
+accountUpdatedMessage=Ditt konto har uppdaterats.
+accountPasswordUpdatedMessage=Ditt lösenord har uppdaterats.
+
+noAccessMessage=Ingen åtkomst
+
+invalidPasswordMinLengthMessage=Ogiltigt lösenord. Minsta längd är {0}.
+invalidPasswordMinDigitsMessage=Ogiltigt lösenord: måste innehålla minst {0} siffror.
+invalidPasswordMinLowerCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} små bokstäver.
+invalidPasswordMinUpperCaseCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} stora bokstäver.
+invalidPasswordMinSpecialCharsMessage=Ogiltigt lösenord: måste innehålla minst {0} specialtecken.
+invalidPasswordNotUsernameMessage=Ogiltigt lösenord: Får inte vara samma som användarnamnet.
+invalidPasswordRegexPatternMessage=Ogiltigt lösenord: matchar inte regex mönstret(en).
+invalidPasswordHistoryMessage=Ogiltigt lösenord: Får inte vara samma som de senaste {0} lösenorden.
+invalidPasswordGenericMessage=Ogiltigt lösenord: Det nya lösenordet stämmer inte med lösenordspolicyn.
+
+failedToProcessResponseMessage=Misslyckades med att behandla svaret
+httpsRequiredMessage=HTTPS krävs
+realmNotEnabledMessage=Realm är inte aktiverad
+invalidRequestMessage=Ogiltig förfrågan
+failedLogout=Utloggning misslyckades
+unknownLoginRequesterMessage=Okänd inloggningsförfrågan
+loginRequesterNotEnabledMessage=Inloggningsförfrågaren är inte aktiverad
+bearerOnlyMessage=Bearer-only-applikationer tillåts inte att initiera inloggning genom webbläsare
+standardFlowDisabledMessage=Klienten tillåts inte att initiera inloggning genom webbläsare med det givna response_type. Standardflödet är inaktiverat för klienten.
+implicitFlowDisabledMessage=Klienten tillåts inte att initiera inloggning genom webbläsare med det givna response_type. Villkorslöst flöde är inaktiverat för klienten.
+invalidRedirectUriMessage=Ogiltig omdirigeringsadress
+unsupportedNameIdFormatMessage=NameIDFormat stöds ej
+invalidRequesterMessage=Ogiltig förfrågare
+registrationNotAllowedMessage=Registrering tillåts ej
+resetCredentialNotAllowedMessage=Återställning av uppgifter tillåts ej
+
+permissionNotApprovedMessage=Rättigheten ej godkänd.
+noRelayStateInResponseMessage=Inget vidarebefordrat tillstånd i svaret från identitetsleverantör.
+insufficientPermissionMessage=Otillräckliga tillstånd för att länka identiteter.
+couldNotProceedWithAuthenticationRequestMessage=Kunde inte fortsätta med autentiseringsförfrågan till identitetsleverantör.
+couldNotObtainTokenMessage=Kunde inte motta element från identitetsleverantör.
+unexpectedErrorRetrievingTokenMessage=Oväntat fel när element hämtas från identitetsleverantör.
+unexpectedErrorHandlingResponseMessage=Oväntat fel under hantering av svar från från identitetsleverantör.
+identityProviderAuthenticationFailedMessage=Autentiseringen misslyckades. Kunde inte autentisera med identitetsleverantör.
+couldNotSendAuthenticationRequestMessage=Kunde inte skicka autentiseringsförfrågan till identitetsleverantör.
+unexpectedErrorHandlingRequestMessage=Oväntat fel under hantering av autentiseringsförfrågan till identitetsleverantör.
+invalidAccessCodeMessage=Ogiltig tillträdeskod.
+sessionNotActiveMessage=Sessionen ej aktiv.
+invalidCodeMessage=Ett fel uppstod, vänligen logga in igen genom din applikation.
+identityProviderUnexpectedErrorMessage=Oväntat fel under autentiseringen med identitetsleverantör
+identityProviderNotFoundMessage=Kunde inte hitta en identitetsleverantör med identifikatorn.
+identityProviderLinkSuccess=Ditt konto lyckades med att länka {0} med kontot {1}.
+staleCodeMessage=Den här sidan är inte längre giltig, vänligen gå tillbaka till din applikation och logga in igen
+realmSupportsNoCredentialsMessage=Realmen stödjer inga inloggningstyper.
+identityProviderNotUniqueMessage=Realmen stödjer flera identitetsleverantör. Kunde inte avgöra vilken identitetsleverantör som skall användas för autentisering.
+emailVerifiedMessage=Din e-postadress har blivit verifierad.
+staleEmailVerificationLink=Länken du klickade på är en gammal, inaktuell länk som inte längre är giltig. Kanske har du redan verifierat din e-post?
+
+backToApplication=&laquo; Tillbaka till applikationen
+missingParameterMessage=Parametrar som saknas\: {0}
+clientNotFoundMessage=Klienten hittades ej.
+clientDisabledMessage=Klienten är inaktiverad.
+invalidParameterMessage=Ogiltig parameter\: {0}
+alreadyLoggedIn=Du är redan inloggad.
+loginAccountTitle=Logga in till ditt konto
diff --git a/themes/custom-theme-template/login/messages/messages_th.properties b/themes/custom-theme-template/login/messages/messages_th.properties
new file mode 100644
index 0000000000000000000000000000000000000000..5696b7c8820b32c18dbf4c5d5086c45f7250f42b
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_th.properties
@@ -0,0 +1,493 @@
+doLogIn=เข้าสู่ระบบ
+doRegister=ลงทะเบียน
+doRegisterSecurityKey=ลงทะเบียน
+doCancel=ยกเลิก
+doSubmit=ส่ง
+doBack=ย้อนกลับ
+doYes=ใช่
+doNo=ไม่ใช่
+doContinue=ดำเนินการต่อ
+doIgnore=ไม่สนใจ
+doAccept=ยอมรับ
+doDecline=ปฏิเสธ
+doForgotPassword=ลืมรหัสผ่าน?
+doClickHere=คลิกที่นี่
+doImpersonate=สวมบทบาท
+doTryAgain=ลองอีกครั้ง
+doTryAnotherWay=ลองวิธีอื่น
+doConfirmDelete=ยืนยันการลบ
+errorDeletingAccount=เกิดข้อผิดพลาดขณะลบบัญชี
+deletingAccountForbidden=คุณไม่มีสิทธิ์เพียงพอในการลบบัญชีของคุณเอง ติดต่อผู้ดูแลระบบ
+kerberosNotConfigured=Kerberos ไม่ได้ถูกกำหนดค่า
+kerberosNotConfiguredTitle=Kerberos ไม่ได้ถูกกำหนดค่า
+bypassKerberosDetail=คุณไม่ได้เข้าสู่ระบบด้วย Kerberos หรือเบราว์เซอร์ของคุณไม่ได้ถูกตั้งค่าให้เข้าสู่ระบบด้วย Kerberos กรุณาคลิกที่ "ดำเนินการต่อ" เพื่อเข้าสู่ระบบโดยวิธีอื่น
+kerberosNotSetUp=Kerberos ไม่ได้ถูกตั้งค่า คุณไม่สามารถเข้าสู่ระบบได้
+registerTitle=ลงทะเบียน
+loginAccountTitle=เข้าสู่ระบบด้วยบัญชีของคุณ
+loginTitle=เข้าสู่ระบบไปยัง {0}
+loginTitleHtml={0}
+impersonateTitle={0} สวมบทบาทผู้ใช้งาน
+impersonateTitleHtml=<strong>{0}</strong> สวมบทบาทผู้ใช้งาน
+realmChoice=Realm
+unknownUser=ผู้ใช้งานที่ไม่รู้จัก
+loginTotpTitle=การตั้งค่า Mobile Authenticator
+loginProfileTitle=ปรับปรุงข้อมูลบัญชีผู้ใช้งาน
+loginIdpReviewProfileTitle=ปรับปรุงข้อมูลบัญชีผู้ใช้งาน
+loginTimeout=การพยายามเข้าสู่ระบบของคุณหมดเวลา การเข้าสู่ระบบจะเริ่มต้นใหม่
+reauthenticate=กรุณาพิสูจน์ตัวจริงอีกครั้งเพื่อดำเนินการต่อ
+oauthGrantTitle=ให้อนุญาต {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=ตรวจสอบว่าคุณไว้วางใจ {0} โดยการทำความเข้าใจว่า {0} จะจัดการข้อมูลของคุณอย่างไร
+oauthGrantReview=คุณสามารถทบทวน
+oauthGrantTos=ข้อตกลงการใช้งาน
+oauthGrantPolicy=นโยบายคุ้มครองข้อมูลส่วนบุคคล
+errorTitle=เราขอโทษ...
+errorTitleHtml=เรา<strong>ขอโทษ</strong> ...
+emailVerifyTitle=การยืนยันอีเมล
+emailForgotTitle=ลืมรหัสผ่านของคุณ?
+updateEmailTitle=ปรับปรุงอีเมล
+emailUpdateConfirmationSentTitle=ส่งอีเมลยืนยันแล้ว
+emailUpdateConfirmationSent=อีเมลยืนยันถูกส่งไปยัง {0} คุณต้องปฏิบัติตามคำแนะนำในอีเมลเพื่อสิ้นสุดการปรับปรุงอีเมล
+emailUpdatedTitle=อีเมลถูกปรับปรุงแล้ว
+emailUpdated=อีเมลของบัญชีถูกปรับปรุงเป็น {0} เรียบร้อยแล้ว
+updatePasswordTitle=ปรับปรุงรหัสผ่าน
+codeSuccessTitle=รหัสสำเร็จ
+codeErrorTitle=รหัสข้อผิดพลาด\: {0}
+displayUnsupported=ไม่สนับสนุนการแสดงผลที่ร้องขอ
+browserRequired=ต้องใช้เบราว์เซอร์ในการเข้าสู่ระบบ
+browserContinue=ต้องใช้เบราว์เซอร์ในการเข้าสู่ระบบต่อ
+browserContinuePrompt=เปิดเบราว์เซอร์และเข้าสู่ระบบต่อ? [y/n]:
+browserContinueAnswer=y
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=Bluetooth
+internal=ภายใน
+unknown=ไม่ทราบ
+
+termsTitle=ข้อกำหนดและเงื่อนไข
+termsText=<p>ข้อกำหนดและเงื่อนไขที่จะกำหนด</p>
+termsPlainText=ข้อกำหนดและเงื่อนไขที่จะกำหนด
+termsAcceptanceRequired=คุณต้องยอมรับข้อกำหนดและเงื่อนไขของเรา
+acceptTerms=ฉันยอมรับข้อกำหนดและเงื่อนไข
+
+recaptchaFailed=Recaptcha ไม่ถูกต้อง
+recaptchaNotConfigured=ต้องใช้ Recaptcha แต่ไม่ได้กำหนดค่า
+consentDenied=การขอความยินยอมถูกปฏิเสธ
+
+noAccount=ผู้ใช้งานใหม่?
+username=ชื่อผู้ใช้งาน
+usernameOrEmail=ชื่อผู้ใช้งานหรืออีเมล
+firstName=ชื่อ
+givenName=ชื่อ
+fullName=ชื่อ-นามสกุล
+lastName=นามสกุล
+familyName=นามสกุล
+email=อีเมล
+password=รหัสผ่าน
+passwordConfirm=ยืนยันรหัสผ่าน
+passwordNew=รหัสผ่านใหม่
+passwordNewConfirm=ยืนยันรหัสผ่านใหม่
+rememberMe=จดจำฉันไว้
+authenticatorCode=รหัสสำหรับใช้ครั้งเดียว
+address=ที่อยู่
+street=ถนน
+locality=อำเภอ/เขต
+region=จังหวัด
+postal_code=รหัสไปรษณีย์
+country=ประเทศ
+emailVerified=อีเมลที่ยืนยันแล้ว
+website=เว็บไซต์
+phoneNumber=หมายเลขโทรศัพท์
+phoneNumberVerified=หมายเลขโทรศัพท์ที่ยืนยันแล้ว
+gender=เพศ
+birthday=วันเกิด
+zoneinfo=เขตเวลา
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=ออกจากระบบจากอุปกรณ์อื่น
+
+profileScopeConsentText=โปรไฟล์ผู้ใช้งาน
+emailScopeConsentText=ที่อยู่อีเมล
+addressScopeConsentText=ที่อยู่
+phoneScopeConsentText=หมายเลขโทรศัพท์
+offlineAccessScopeConsentText=การเข้าถึงแบบออฟไลน์
+samlRoleListScopeConsentText=บทบาทของฉัน
+rolesScopeConsentText=บทบาทผู้ใช้งาน
+
+restartLoginTooltip=เริ่มการเข้าสู่ระบบใหม่
+
+loginTotpIntro=คุณต้องตั้งค่าอุปกรณ์สำหรับสร้างรหัสแบบใช้ครั้งเดียวเพื่อเข้าถึงบัญชีนี้
+loginTotpStep1=ติดตั้งแอปพลิเคชันใดแอปพลิเคชันหนึ่งจากรายการต่อไปนี้ลงในโทรศัพท์ของคุณ:
+loginTotpStep2=เปิดแอปพลิเคชันและสแกนบาร์โค้ด:
+loginTotpStep3=ใส่รหัสผ่านครั้งเดียวที่แอปพลิเคชันให้และคลิก "ส่ง" เพื่อสิ้นสุดการตั้งค่า
+loginTotpStep3DeviceName=กำหนดชื่ออุปกรณ์เพื่อช่วยจัดการอุปกรณ์ OTP ของคุณ
+loginTotpManualStep2=เปิดแอปพลิเคชันและใส่คีย์:
+loginTotpManualStep3=ใช้การตั้งค่าต่อไปนี้หากแอปพลิเคชันสามารถระบุการตั้งค่าได้:
+loginTotpUnableToScan=ไม่สามารถสแกนได้?
+loginTotpScanBarcode=สแกนบาร์โค้ด?
+loginCredential=Credential ข้อมูลประจำตัว
+loginOtpOneTime=รหัสสำหรับใช้ครั้งเดียว
+loginTotpType=ประเภท
+loginTotpAlgorithm=ขั้นตอนวิธี
+loginTotpDigits=หลัก
+loginTotpInterval=ช่วงเวลา
+loginTotpCounter=Counter
+loginTotpDeviceName=ชื่ออุปกรณ์
+
+loginTotp.totp=Time-based
+loginTotp.hotp=Counter-based
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=เลือกวิธีการเข้าสู่ระบบ
+
+oauthGrantRequest=คุณอนุญาตให้ใช้สิทธิ์ในการเข้าถึงเหล่านี้หรือไม่?
+inResource=ใน
+
+oauth2DeviceVerificationTitle=การเข้าสู่ระบบของอุปกรณ์
+verifyOAuth2DeviceUserCode=ระบุรหัสที่ได้รับจากอุปกรณ์ของคุณและคลิก "ส่ง"
+oauth2DeviceInvalidUserCodeMessage=รหัสไม่ถูกต้อง โปรดลองอีกครั้ง
+oauth2DeviceExpiredUserCodeMessage=รหัสหมดอายุแล้ว โปรดกลับไปที่อุปกรณ์ของคุณและลองเชื่อมต่ออีกครั้ง
+oauth2DeviceVerificationCompleteHeader=การเข้าสู่ระบบของอุปกรณ์สำเร็จ
+oauth2DeviceVerificationCompleteMessage=คุณสามารถปิดหน้าต่างเบราว์เซอร์นี้และกลับไปที่อุปกรณ์ของคุณ
+oauth2DeviceVerificationFailedHeader=การเข้าสู่ระบบของอุปกรณ์ล้มเหลว
+oauth2DeviceVerificationFailedMessage=คุณสามารถปิดหน้าต่างเบราว์เซอร์นี้และกลับไปที่อุปกรณ์ของคุณและลองเชื่อมต่ออีกครั้ง
+oauth2DeviceConsentDeniedMessage=การขอความยินยอมให้เชื่อมต่อกับอุปกรณ์ถูกปฏิเสธ
+oauth2DeviceAuthorizationGrantDisabledMessage=ไคลเอนต์ไม่ได้รับการยินยอมให้เริ่ม OAuth 2.0 Device Authorization Grant การทำงานนี้ถูกปิดใช้งานสำหรับไคลเอนต์
+
+emailVerifyInstruction1=ได้ส่งอีเมลที่มีคำแนะนำในการยืนยันที่อยู่อีเมลของคุณไปยังที่อยู่อีเมลของคุณ {0}
+emailVerifyInstruction2=ไม่ได้รับรหัสยืนยันในอีเมลของคุณ?
+emailVerifyInstruction3=เพื่อส่งอีเมลอีกครั้ง
+
+emailLinkIdpTitle=ลิงก์ {0}
+emailLinkIdp1=ได้ส่งอีเมลที่มีคำแนะนำในการเชื่อมโยงบัญชี {0} {1} กับ {2} บัญชีของคุณ
+emailLinkIdp2=ไม่ได้รับรหัสยืนยันในอีเมลของคุณ?
+emailLinkIdp3=เพื่อส่งอีเมลอีกครั้ง
+emailLinkIdp4=หากคุณได้ยืนยันอีเมลในบราวเซอร์อื่นแล้ว
+emailLinkIdp5=เพื่อดำเนินการต่อ
+
+backToLogin=&laquo; กลับไปที่การเข้าสู่ระบบ
+
+emailInstruction=ระบุชื่อผู้ใช้งานหรือที่อยู่อีเมลของคุณ เราจะส่งคำแนะนำในการสร้างรหัสผ่านใหม่ให้คุณ
+emailInstructionUsername=ระบุชื่อผู้ใช้งานของคุณ เราจะส่งคำแนะนำในการสร้างรหัสผ่านใหม่ให้คุณ
+
+copyCodeInstruction=โปรดคัดลอกและวางรหัสนี้ในแอปพลิเคชันของคุณ:
+
+pageExpiredTitle=หน้านี้หมดเวลาแล้ว
+pageExpiredMsg1=เพื่อเริ่มกระบวนการเข้าสู่ระบบอีกครั้ง
+pageExpiredMsg2=เพื่อดำเนินการเข้าสู่ระบบต่อ
+
+personalInfo=ข้อมูลส่วนตัว:
+role_admin=ผู้ดูแลระบบ
+role_realm-admin=ผู้ดูแลระบบ realm
+role_create-realm=สร้าง realm
+role_create-client=สร้างไคลเอนต์
+role_view-realm=ดู realm
+role_view-users=ดูผู้ใช้งาน
+role_view-applications=ดูแอปพลิเคชัน
+role_view-clients=ดูไคลเอนต์
+role_view-events=ดูเหตุการณ์
+role_view-identity-providers=ดูผู้ให้บริการตัวตน
+role_manage-realm=จัดการ realm
+role_manage-users=จัดการผู้ใช้งาน
+role_manage-applications=จัดการแอปพลิเคชัน
+role_manage-identity-providers=จัดการผู้ให้บริการตัวตน
+role_manage-clients=จัดการไคลเอนต์
+role_manage-events=จัดการเหตุการณ์
+role_view-profile=ดูโปรไฟล์
+role_manage-account=จัดการบัญชี
+role_manage-account-links=จัดการการเชื่อมโยงบัญชี
+role_read-token=อ่านโทเค็น
+role_offline-access=การเข้าถึงแบบออฟไลน์
+client_account=บัญชี
+client_account-console=คอนโซลบัญชี
+client_security-admin-console=คอนโซลผู้ดูแลระบบความปลอดภัย
+client_admin-cli=CLI สำหรับผู้ดูแลระบบ
+client_realm-management=การจัดการ realm
+client_broker=ตัวแทน
+
+requiredFields=ฟิลด์ที่ต้องระบุ
+
+invalidUserMessage=ชื่อผู้ใช้งานหรือรหัสผ่านไม่ถูกต้อง
+invalidUsernameMessage=ชื่อผู้ใช้งานไม่ถูกต้อง
+invalidUsernameOrEmailMessage=ชื่อผู้ใช้งานหรืออีเมลไม่ถูกต้อง
+invalidPasswordMessage=รหัสผ่านไม่ถูกต้อง
+invalidEmailMessage=ที่อยู่อีเมลไม่ถูกต้อง
+accountDisabledMessage=บัญชีถูกปิดใช้งาน ติดต่อผู้ดูแลระบบของคุณ
+accountTemporarilyDisabledMessage=บัญชีถูกปิดใช้งานชั่วคราว ติดต่อผู้ดูแลระบบของคุณหรือลองใหม่ในภายหลัง
+expiredCodeMessage=การเข้าสู่ระบบหมดเวลา กรุณาเข้าสู่ระบบอีกครั้ง
+expiredActionMessage=การกระทำหมดเวลา กรุณาเข้าสู่ระบบในตอนนี้
+expiredActionTokenNoSessionMessage=การกระทำหมดเวลา
+expiredActionTokenSessionExistsMessage=การกระทำหมดเวลา กรุณาเริ่มต้นใหม่
+sessionLimitExceeded=มีเซสชันมากเกินไป
+
+missingFirstNameMessage=กรุณาระบุชื่อ
+missingLastNameMessage=กรุณาระบุนามสกุล
+missingEmailMessage=กรุณาระบุอีเมล
+missingUsernameMessage=กรุณาระบุชื่อผู้ใช้งาน
+missingPasswordMessage=กรุณาระบุรหัสผ่าน
+missingTotpMessage=กรุณาระบุรหัสของ authenticator
+missingTotpDeviceNameMessage=กรุณาระบุชื่ออุปกรณ์
+notMatchPasswordMessage=รหัสผ่านไม่ตรงกัน
+
+error-invalid-value=ค่าไม่ถูกต้อง
+error-invalid-blank=กรุณาระบุค่า
+error-empty=กรุณาระบุค่า
+error-invalid-length=ความยาวต้องอยู่ระหว่าง {1} และ {2} อักษร
+error-invalid-length-too-short=ความยาวขั้นต่ำคือ {1} อักษร
+error-invalid-length-too-long=ความยาวสูงสุดคือ {2} อักษร
+error-invalid-email=ที่อยู่อีเมลไม่ถูกต้อง
+error-invalid-number=จำนวนไม่ถูกต้อง
+error-number-out-of-range=จำนวนต้องอยู่ระหว่าง {1} และ {2}
+error-number-out-of-range-too-small=จำนวนต้องมีค่าขั้นต่ำ {1}
+error-number-out-of-range-too-big=จำนวนต้องมีค่าสูงสุด {2}
+error-pattern-no-match=ค่าไม่ถูกต้อง
+error-invalid-uri=URL ไม่ถูกต้อง
+error-invalid-uri-scheme=scheme URL ไม่ถูกต้อง
+error-invalid-uri-fragment=fragment URL ไม่ถูกต้อง
+error-user-attribute-required=กรุณาระบุฟิลด์นี้
+error-invalid-date=วันที่ไม่ถูกต้อง
+error-user-attribute-read-only=ฟิลด์นี้เป็นแบบอ่านอย่างเดียว
+error-username-invalid-character=ค่ามีอักขระที่ไม่ถูกต้อง
+error-person-name-invalid-character=ค่ามีอักขระที่ไม่ถูกต้อง
+error-reset-otp-missing-id=กรุณาเลือกการตั้งค่า OTP
+
+invalidPasswordExistingMessage=รหัสผ่านเดิมไม่ถูกต้อง
+invalidPasswordBlacklistedMessage=รหัสผ่านไม่ถูกต้อง: รหัสผ่านอยู่ในบัญชีดำ
+invalidPasswordConfirmMessage=การยืนยันรหัสผ่านไม่ตรงกัน
+invalidTotpMessage=รหัส Authenticator ไม่ถูกต้อง
+
+usernameExistsMessage=มีชื่อผู้ใช้งานนี้อยู่แล้ว
+emailExistsMessage=มีอีเมลอยู่แล้ว
+
+federatedIdentityExistsMessage=ผู้ใช้งานที่มี {0} {1} มีอยู่แล้ว กรุณาเข้าสู่ระบบจัดการบัญชีเพื่อเชื่อมโยงบัญชี
+federatedIdentityUnavailableMessage=ผู้ใช้งาน {0} ที่ได้รับการตรวจสอบจากผู้ให้บริการตัวตน {1} ไม่มีอยู่ กรุณาติดต่อผู้ดูแลระบบของคุณ
+federatedIdentityUnmatchedEssentialClaimMessage=ไอดีโทเค็นที่ออกโดยผู้ให้บริการตัวตนไม่ตรงกับการอ้างสิทธิ์ที่จำเป็นที่กำหนดไว้ กรุณาติดต่อผู้ดูแลระบบของคุณ
+
+confirmLinkIdpTitle=มีบัญชีอยู่แล้ว
+federatedIdentityConfirmLinkMessage=ผู้ใช้งานที่มี {0} {1} มีอยู่แล้ว คุณต้องการดำเนินการอย่างไรต่อ?
+federatedIdentityConfirmReauthenticateMessage=ตรวจสอบตัวตนเพื่อเชื่อมโยงบัญชีของคุณกับ {0}
+nestedFirstBrokerFlowMessage=ผู้ใช้งาน {0} {1} ไม่ได้เชื่อมโยงกับผู้ใช้งานที่รู้จัก
+confirmLinkIdpReviewProfile=รีวิวโปรไฟล์
+confirmLinkIdpContinue=เพิ่มเข้าไปในบัญชีที่มีอยู่
+
+configureTotpMessage=คุณต้องตั้งค่า Mobile Authenticator เพื่อเปิดใช้งานบัญชีของคุณ
+configureBackupCodesMessage=คุณต้องตั้งค่ารหัสสำรองเพื่อเปิดใช้งานบัญชีของคุณ
+updateProfileMessage=คุณต้องปรับปรุงโปรไฟล์ผู้ใช้งานเพื่อเปิดใช้งานบัญชีของคุณ
+updatePasswordMessage=คุณต้องเปลี่ยนรหัสผ่านเพื่อเปิดใช้งานบัญชีของคุณ
+updateEmailMessage=คุณต้องปรับปรุงที่อยู่อีเมลเพื่อเปิดใช้งานบัญชีของคุณ
+resetPasswordMessage=คุณต้องเปลี่ยนรหัสผ่าน
+verifyEmailMessage=คุณต้องยืนยันที่อยู่อีเมลเพื่อเปิดใช้งานบัญชีของคุณ
+linkIdpMessage=คุณจำเป็นต้องยืนยันที่อยู่อีเมลเพื่อเชื่อมโยงบัญชีของคุณกับ {0}
+
+emailSentMessage=คุณจะได้รับอีเมลในไม่ช้านี้พร้อมคำแนะนำเพิ่มเติม
+emailSendErrorMessage=การส่งอีเมลล้มเหลว โปรดลองอีกครั้งในภายหลัง
+
+accountUpdatedMessage=บัญชีของคุณได้รับการปรับปรุงแล้ว
+accountPasswordUpdatedMessage=รหัสผ่านของคุณได้รับการปรับปรุงแล้ว
+
+delegationCompleteHeader=เข้าสู่ระบบสำเร็จ
+delegationCompleteMessage=คุณสามารถปิดหน้าต่างเบราว์เซอร์นี้และกลับไปที่แอปพลิเคชันคอนโซลของคุณ.
+delegationFailedHeader=เข้าสู่ระบบล้มเหลว
+delegationFailedMessage=คุณสามารถปิดหน้าต่างเบราว์เซอร์นี้และกลับไปที่แอปพลิเคชันคอนโซลของคุณและลองเข้าสู่ระบบอีกครั้ง.
+
+noAccessMessage=ไม่มีการเข้าถึง
+
+invalidPasswordMinLengthMessage=รหัสผ่านไม่ถูกต้อง: ความยาวขั้นต่ำ {0} อักษร
+invalidPasswordMaxLengthMessage=รหัสผ่านไม่ถูกต้อง: ความยาวสูงสุด {0} อักษร
+invalidPasswordMinDigitsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีอย่างน้อย {0} หลัก
+invalidPasswordMinLowerCaseCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีตัวอักษรพิมพ์เล็กอย่างน้อย {0} อักษร
+invalidPasswordMinUpperCaseCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีตัวอักษรพิมพ์ใหญ่อย่างน้อย {0} อักษร
+invalidPasswordMinSpecialCharsMessage=รหัสผ่านไม่ถูกต้อง: ต้องมีอักขระพิเศษอย่างน้อย {0} อักษร
+invalidPasswordNotUsernameMessage=รหัสผ่านไม่ถูกต้อง: ต้องไม่เหมือนกับชื่อผู้ใช้งาน
+invalidPasswordNotEmailMessage=รหัสผ่านไม่ถูกต้อง: ต้องไม่เหมือนกับอีเมล
+invalidPasswordRegexPatternMessage=รหัสผ่านไม่ถูกต้อง: ไม่ตรงกับรูปแบบ regex
+invalidPasswordHistoryMessage=รหัสผ่านไม่ถูกต้อง: ต้องไม่เหมือนกับ {0} รหัสผ่านล่าสุด
+invalidPasswordGenericMessage=รหัสผ่านไม่ถูกต้อง: รหัสผ่านใหม่ไม่เป็นไปตามนโยบายการตั้งรหัสผ่าน
+
+failedToProcessResponseMessage=การประมวลผลการตอบสนองล้มเหลว
+httpsRequiredMessage=จำเป็นต้องใช้ HTTPS
+realmNotEnabledMessage=ไม่ได้เปิดใช้ realm
+invalidRequestMessage=คำขอไม่ถูกต้อง
+successLogout=คุณออกจากระบบแล้ว
+failedLogout=การออกจากระบบล้มเหลว
+unknownLoginRequesterMessage=ผู้ร้องขอเข้าสู่ระบบที่ไม่รู้จัก
+loginRequesterNotEnabledMessage=ผู้ร้องขอเข้าสู่ระบบที่ไม่ได้เปิดใช้งาน
+bearerOnlyMessage=แอปพลิเคชันที่ใช้ Bearer-only ไม่ได้รับอนุญาตให้เริ่มการเข้าสู่ระบบผ่านเบราว์เซอร์
+standardFlowDisabledMessage=ไคลเอนต์ไม่ได้รับอนุญาตให้เริ่มการเข้าสู่ระบบผ่านเบราว์เซอร์ด้วย response_type ที่ระบุ Standard flow ถูกระงับสำหรับไคลเอนต์
+implicitFlowDisabledMessage=ไคลเอนต์ไม่ได้รับอนุญาตให้เริ่มการเข้าสู่ระบบผ่านเบราว์เซอร์ด้วย response_type ที่ระบุ Implicit flow ถูกระงับสำหรับไคลเอนต์
+invalidRedirectUriMessage=Uri redirect ไม่ถูกต้อง
+unsupportedNameIdFormatMessage=รูปแบบ NameIDFormat ที่ไม่รองรับ
+invalidRequesterMessage=ผู้ร้องขอไม่ถูกต้อง
+registrationNotAllowedMessage=ไม่อนุญาตให้ลงทะเบียน
+resetCredentialNotAllowedMessage=ไม่อนุญาตให้รีเซ็ต Credential
+
+permissionNotApprovedMessage=ไม่ได้รับการอนุมัติสิทธิ์
+noRelayStateInResponseMessage=ไม่มีสถานะ relay ในการตอบสนองจากผู้ให้บริการตัวตน
+insufficientPermissionMessage=สิทธิ์ไม่เพียงพอในการเชื่อมโยงตัวตน
+couldNotProceedWithAuthenticationRequestMessage=ไม่สามารถดำเนินการต่อเพื่อส่งคำขอพิสูจน์ตัวจริงไปยังผู้ให้บริการตัวตน
+couldNotObtainTokenMessage=ไม่สามารถรับโทเค็นจากผู้ให้บริการตัวตน
+unexpectedErrorRetrievingTokenMessage=เกิดข้อผิดพลาดที่ไม่คาดคิดขณะรับโทเค็นจากผู้ให้บริการตัวตน
+unexpectedErrorHandlingResponseMessage=เกิดข้อผิดพลาดที่ไม่คาดคิดขณะจัดการการตอบสนองจากผู้ให้บริการตัวตน
+identityProviderAuthenticationFailedMessage=การตรวจสอบล้มเหลว ไม่สามารถตรวจสอบกับผู้ให้บริการตัวตน
+couldNotSendAuthenticationRequestMessage=ไม่สามารถส่งคำขอพิสูจน์ตัวจริงไปยังผู้ให้บริการตัวตน
+unexpectedErrorHandlingRequestMessage=เกิดข้อผิดพลาดที่ไม่คาดคิดขณะจัดการคำขอพิสูจน์ตัวจริงไปยังผู้ให้บริการตัวตน
+invalidAccessCodeMessage=Access code ไม่ถูกต้อง
+sessionNotActiveMessage=ไม่ได้ใช้งานเซสชัน
+invalidCodeMessage=เกิดข้อผิดพลาด กรุณาเข้าสู่ระบบผ่านแอปพลิเคชันของคุณอีกครั้ง
+cookieNotFoundMessage=ไม่พบคุกกี้ โปรดตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานคุกกี้ในเบราว์เซอร์แล้ว
+insufficientLevelOfAuthentication=ระดับการพิสูจน์ตัวจริงที่ร้องขอมีไม่เพียงพอ
+identityProviderUnexpectedErrorMessage=เกิดข้อผิดพลาดที่ไม่คาดคิดขณะพิสูจน์ตัวจริงกับผู้ให้บริการตัวตน
+identityProviderMissingStateMessage=ไม่พบพารามิเตอร์ state จากการตอบสนองของผู้ให้บริการตัวตน
+identityProviderInvalidResponseMessage=การตอบสนองจากผู้ให้บริการตัวตนไม่ถูกต้อง
+identityProviderInvalidSignatureMessage=ลายเซ็นในการตอบสนองจากผู้ให้บริการตัวตนไม่ถูกต้อง
+identityProviderNotFoundMessage=ไม่พบผู้ให้บริการตัวตนด้วยตัวระบุนี้
+identityProviderLinkSuccess=คุณได้ยืนยันที่อยู่อีเมลของคุณเรียบร้อยแล้ว กรุณากลับไปที่เบราว์เซอร์เดิมของคุณและดำเนินการเข้าสู่ระบบที่นั่น
+staleCodeMessage=หน้านี้ไม่ถูกต้องอีกต่อไป กรุณากลับไปที่แอปพลิเคชันของคุณและเข้าสู่ระบบอีกครั้ง
+realmSupportsNoCredentialsMessage=realm ไม่สนับสนุนประเภท credential ใด ๆ
+credentialSetupRequired=ไม่สามารถเข้าสู่ระบบ จำเป็นต้องตั้งค่าข้อมูลประจำตัว
+identityProviderNotUniqueMessage=realm สนับสนุนผู้ให้บริการตัวตนหลายแหล่ง ไม่สามารถระบุได้ว่าควรพิสูจน์ตัวจริงผ่านผู้ให้บริการตัวตนใด
+emailVerifiedMessage=ยืนยันที่อยู่อีเมลของคุณแล้ว
+staleEmailVerificationLink=ลิงก์ที่คุณคลิกเป็นลิงก์ที่เก่าและไม่ถูกต้อง บางทีคุณอาจจะยืนยันอีเมลของคุณแล้ว
+identityProviderAlreadyLinkedMessage=Federated identity ที่ส่งคืนมาจากผู้ให้บริการ {0} มีการเชื่อมโยงกับผู้ใช้งานอื่นแล้ว
+confirmAccountLinking=ยืนยันการเชื่อมโยงบัญชี {0} ของผู้ให้บริการตัวตน {1} กับบัญชีของคุณ
+confirmEmailAddressVerification=ยืนยันความถูกต้องของที่อยู่อีเมล {0}
+confirmExecutionOfActions=ดำเนินการต่อไปนี้
+
+backToApplication=&laquo; กลับไปที่แอปพลิเคชัน
+missingParameterMessage=ไม่มีพารามิเตอร์\: {0}
+clientNotFoundMessage=ไม่พบไคลเอนต์
+clientDisabledMessage=ไคลเอนต์ถูกปิดใช้งาน
+invalidParameterMessage=พารามิเตอร์ไม่ถูกต้อง\: {0}
+alreadyLoggedIn=คุณเข้าสู่ระบบแล้ว
+differentUserAuthenticated=คุณได้พิสูจน์ตัวจริงเป็นผู้ใช้งานอื่น ''{0}'' ในเซสชันนี้แล้ว กรุณาออกจากระบบก่อน
+brokerLinkingSessionExpired=ได้ขอการเชื่อมโยงบัญชีของโบรกเกอร์ แต่เซสชันปัจจุบันไม่ถูกต้องแล้ว
+proceedWithAction=&raquo; คลิกที่นี่เพื่อดำเนินการ
+acrNotFulfilled=คุณสมบัติไม่เป็นไปตามข้อกำหนดในการพิสูจน์ตัวจริง
+
+requiredAction.CONFIGURE_TOTP=ตั้งค่า OTP
+requiredAction.terms_and_conditions=ข้อกำหนดและเงื่อนไข
+requiredAction.UPDATE_PASSWORD=ปรับปรุงรหัสผ่าน
+requiredAction.UPDATE_PROFILE=ปรับปรุงโปรไฟล์
+requiredAction.VERIFY_EMAIL=ยืนยันอีเมล
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=สร้างรหัสกู้คืน
+requiredAction.webauthn-register-passwordless=Webauthn Register Passwordless
+
+invalidTokenRequiredActions=การกระทำที่จำเป็นที่อยู่ในลิงก์ไม่ถูกต้อง
+
+doX509Login=คุณจะเข้าสู่ระบบในฐานะ\:
+clientCertificate=ใบรับรองไคลเอนต์ X509\:
+noCertificate=[ไม่มีใบรับรอง]
+
+
+pageNotFound=ไม่พบหน้า
+internalServerError=เกิดข้อผิดพลาดภายในเซิร์ฟเวอร์
+
+console-username=ชื่อผู้ใช้งาน:
+console-password=รหัสผ่าน:
+console-otp=รหัสสำหรับใช้ครั้งเดียว:
+console-new-password=รหัสผ่านใหม่:
+console-confirm-password=ยืนยันรหัสผ่าน:
+console-update-password=จำเป็นต้องปรับปรุงรหัสผ่านของคุณ
+console-verify-email=คุณจำเป็นต้องยืนยันที่อยู่อีเมลของคุณ เราได้ส่งอีเมลพร้อมรหัสยืนยันไปที่ {0} กรุณาระบุรหัสที่ได้รับลงในช่องว่างด้านล่าง
+console-email-code=รหัสอีเมล:
+console-accept-terms=ยอมรับข้อกำหนด? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=ข้อมูลผู้ใช้งาน
+openshift.scope.user_check-access=ข้อมูลการเข้าถึงของผู้ใช้งาน
+openshift.scope.user_full=การเข้าถึงแบบเต็มรูปแบบ
+openshift.scope.list-projects=รายการโปรเจค
+
+# SAML authentication
+saml.post-form.title=การเปลี่ยนเส้นทางการพิสูจน์ตัวจริง
+saml.post-form.message=กำลังเปลี่ยนเส้นทาง โปรดรอ
+saml.post-form.js-disabled=JavaScript ถูกปิดใช้งาน เราขอแนะนำให้คุณเปิดใช้งาน คลิกที่ปุ่มด้านล่างเพื่อดำเนินการต่อ
+saml.artifactResolutionServiceInvalidResponse=ไม่สามารถ resolve artifact ได้
+
+#authenticators
+otp-display-name=แอปพลิเคชัน Authenticator
+otp-help-text=ระบุรหัสยืนยันจากแอปพลิเคชัน Authenticator
+otp-reset-description=การตั้งค่า OTP ใดที่ควรถูกลบ?
+password-display-name=รหัสผ่าน
+password-help-text=ลงชื่อเข้าใช้โดยการระบุรหัสผ่าน
+auth-username-form-display-name=ชื่อผู้ใช้งาน
+auth-username-form-help-text=เริ่มลงชื่อเข้าใช้โดยการระบุชื่อผู้ใช้งาน
+auth-username-password-form-display-name=ชื่อผู้ใช้งานและรหัสผ่าน
+auth-username-password-form-help-text=ลงชื่อเข้าใช้โดยการระบุชื่อผู้ใช้งานและรหัสผ่าน
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=รหัสพิสูจน์ตัวจริงเพื่อการกู้คืน
+auth-recovery-authn-code-form-help-text=ระบุรหัสพิสูจน์ตัวจริงเพื่อการกู้คืนจากรายการที่สร้างไว้ก่อนหน้า
+auth-recovery-code-info-message=กรุณาระบุรหัสกู้คืนที่ระบุ
+auth-recovery-code-prompt=รหัสกู้คืน #{0}
+auth-recovery-code-header=เข้าสู่ระบบด้วยรหัสพิสูจน์ตัวจริงเพื่อการกู้คืน
+recovery-codes-error-invalid=รหัสพิสูจน์ตัวจริงเพื่อการกู้คืนไม่ถูกต้อง
+recovery-code-config-header=พิสูจน์ตัวจริงเพื่อการกู้คืน
+recovery-code-config-warning-title=รหัสกู้คืนเหล่านี้จะไม่ปรากฏอีกหลังจากที่คุณออกจากหน้านี้ไปแล้ว
+recovery-code-config-warning-message=ตรวจสอบให้แน่ใจว่าคุณได้พิมพ์ ดาวน์โหลด หรือคัดลอกรหัส เก็บไว้ในที่ที่ปลอดภัย หากคุณยกเลิกการตั้งค่า รหัสกู้คืนเหล่านี้จะถูกลบออกจากบัญชีของคุณ
+recovery-codes-print=พิมพ์
+recovery-codes-download=ดาวน์โหลด
+recovery-codes-copy=คัดลอก
+recovery-codes-copied=คัดลอกแล้ว
+recovery-codes-confirmation-message=ฉันได้บันทึกรหัสเหล่านี้ไว้ในที่ที่ปลอดภัยแล้ว
+recovery-codes-action-complete=การตั้งค่าเสร็จสมบูรณ์
+recovery-codes-action-cancel=ยกเลิกการตั้งค่า
+recovery-codes-download-file-header=เก็บรหัสกู้คืนเหล่านี้ไว้ในที่ที่ปลอดภัย
+recovery-codes-download-file-description=รหัสกู้คืนคือรหัสผ่านที่ใช้ได้เพียงครั้งเดียวที่จะช่วยให้คุณสามารถเข้าสู่ระบบได้หากคุณไม่สามารถเข้าถึง authenticator ของคุณ
+recovery-codes-download-file-date= รหัสเหล่านี้ถูกสร้างขึ้นเมื่อ
+recovery-codes-label-default=รหัสกู้คืน
+
+# WebAuthn
+webauthn-display-name=คีย์รักษาความปลอดภัย
+webauthn-help-text=ใช้คีย์รักษาความปลอดภัยของคุณเพื่อเข้าสู่ระบบ
+webauthn-passwordless-display-name=คีย์รักษาความปลอดภัย
+webauthn-passwordless-help-text=ใช้คีย์รักษาความปลอดภัยสำหรับการเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่าน
+webauthn-login-title=การเข้าสู่ระบบด้วยคีย์รักษาความปลอดภัย
+webauthn-registration-title=การลงทะเบียนคีย์รักษาความปลอดภัย
+webauthn-available-authenticators=คีย์รักษาความปลอดภัยที่มีอยู่
+webauthn-unsupported-browser-text=เว็บเบราว์เซอร์นี้ไม่สนับสนุน WebAuthn ลองใช้เบราว์เซอร์อื่นหรือติดต่อผู้ดูแลระบบของคุณ
+webauthn-doAuthenticate=เข้าสู่ระบบด้วยคีย์รักษาความปลอดภัย
+webauthn-createdAt-label=สร้างแล้ว
+
+# WebAuthn Error
+webauthn-error-title=ข้อผิดพลาดของคีย์รักษาความปลอดภัย
+webauthn-error-registration=การลงทะเบียนคีย์รักษาความปลอดภัยของคุณไม่สำเร็จ<br/> {0}
+webauthn-error-api-get=การพิสูจน์ตัวจริงโดยใช้คีย์รักษาความปลอดภัยไม่สำเร็จ<br/> {0}
+webauthn-error-different-user=ผู้ใช้งานที่พิสูจน์ตัวจริงรายแรกไม่ใช่รายที่ได้รับการพิสูจน์ตัวจริงจากคีย์รักษาความปลอดภัย
+webauthn-error-auth-verification=ผลการพิสูจน์ตัวจริงของคีย์รักษาความปลอดภัยไม่ถูกต้อง<br/> {0}
+webauthn-error-register-verification=ผลการลงทะเบียนของคีย์รักษาความปลอดภัยไม่ถูกต้อง<br/> {0}
+webauthn-error-user-not-found=ผู้ใช้งานที่ไม่รู้จักได้รับการพิสูจน์ตัวจริงจากคีย์รักษาความปลอดภัย
+
+# Identity provider
+identity-provider-redirector=เชื่อมต่อกับผู้ให้บริการตัวตนอื่น
+identity-provider-login-label=หรือเข้าสู่ระบบโดยใช้
+idp-email-verification-display-name=การทวนสอบอีเมล
+idp-email-verification-help-text=เชื่อมโยงบัญชีของคุณโดยการทวนสอบอีเมลของคุณ
+idp-username-password-form-display-name=ชื่อผู้ใช้งานและรหัสผ่าน
+idp-username-password-form-help-text=เชื่อมโยงบัญชีของคุณโดยเข้าสู่ระบบ
+
+finalDeletionConfirmation=หากคุณลบบัญชีของคุณ จะไม่สามารถกู้คืนได้ หากต้องการเก็บบัญชีของคุณ ให้คลิกยกเลิก
+irreversibleAction=การกระทำนี้ไม่สามารถย้อนกลับได้
+deleteAccountConfirm=ยืนยันการลบบัญชี
+
+deletingImplies=การลบบัญชีของคุณหมายถึง:
+errasingData=การลบข้อมูลทั้งหมดของคุณ
+loggingOutImmediately=การออกจากระบบในทันที
+accountUnusable=ไม่สามารถใช้แอปพลิเคชันโดยใช้บัญชีนี้ได้
+userDeletedSuccessfully=ลบผู้ใช้งานสำเร็จแล้ว
+
+access-denied=ปฏิเสธการเข้าถึง
+access-denied-when-idp-auth=การเข้าถึงถูกปฏิเสธเมื่อพิสูจน์ตัวจริงด้วย {0}
+
+frontchannel-logout.title=กำลังออกจากระบบ
+frontchannel-logout.message=คุณกำลังออกจากระบบจากแอปพลิเคชันต่อไปนี้
+logoutConfirmTitle=กำลังออกจากระบบ
+logoutConfirmHeader=คุณต้องการออกจากระบบหรือไม่?
+doLogout=ออกจากระบบ
+
+readOnlyUsernameMessage=คุณไม่สามารถปรับปรุงชื่อผู้ใช้งานของคุณเนื่องจากเป็นข้อมูลแบบอ่านอย่างเดียว
diff --git a/themes/custom-theme-template/login/messages/messages_tr.properties b/themes/custom-theme-template/login/messages/messages_tr.properties
new file mode 100755
index 0000000000000000000000000000000000000000..4e2a8a8498ef9230eedb6f6d4ac207cb9457f776
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_tr.properties
@@ -0,0 +1,297 @@
+doLogIn=Oturum aç
+doRegister=Kayıt ol
+doRegisterSecurityKey=Kayıt ol
+doCancel=İptal et
+doSubmit=Gönder
+doYes=Evet
+doNo=Hayır
+doContinue=Devam et
+doIgnore=Yoksay
+doAccept=Kabul Et
+doDecline=Reddet
+doForgotPassword=Parolanızı mı unuttunuz?
+doClickHere=Buraya Tıklayın
+doImpersonate=Kişiselleştir
+kerberosNotConfigured=Kerberos Tanımlanmamış
+kerberosNotConfiguredTitle=Kerberos Tanımlanmamış
+bypassKerberosDetail=Ya Kerberos ile giriş yapmadınız veya tarayıcınız Kerberos giriş için ayarlanmamış. Diğer yollarla giriş yapmak için lütfen devam''a tıklayın
+kerberosNotSetUp=Kerberos kurulmadı. Giriş yapamazsın.
+registerTitle=Kayıt ol
+loginTitle={0} adresinde oturum açın
+loginTitleHtml={0}
+impersonateTitle={0} Kullanıcı kimliğine bürün
+impersonateTitleHtml=<strong>{0}</strong> Kullanıcı kimliğine bürün
+realmChoice=Realm
+unknownUser=Bilinmeyen kullanıcı
+loginTotpTitle=Mobil Kimlik Doğrulama Kurulumu
+loginProfileTitle=Hesap bilgilerini Güncelle
+loginTimeout=Giriş yapmak  çok uzun sürdü. Giriş süreci baştan başlayacak.
+oauthGrantTitle={0} adresine Erişim Ver
+oauthGrantTitleHtml={0}
+errorTitle=Üzgünüz...
+errorTitleHtml=<strong>Üzgünüz ...</strong>
+emailVerifyTitle=Eposta Doğrulama
+emailForgotTitle=Parolanızı mı unuttunuz?
+updatePasswordTitle=Şifre güncelle
+codeSuccessTitle=Başarılı işlem kodu
+codeErrorTitle=Hatalı işlem kodu\: {0}
+displayUnsupported=İstenen gösterim türü desteklenmiyor
+browserRequired=Giriş için taryıcı gerekli
+browserContinue=Girişe devam etmek için tarayıcı gerekli
+browserContinuePrompt=Tarayıcı aç ve girişe devam et? [e/h]:
+browserContinueAnswer=h
+
+
+termsTitle=Şartlar ve koşullar
+termsText=<p>Tanımlanacak şartlar ve koşullar</p>
+termsPlainText=Tanımlanacak şartlar ve koşullar.
+
+recaptchaFailed=Geçersiz Recaptcha
+recaptchaNotConfigured=Recaptcha gerekli, ancak yapılandırılmamış
+consentDenied=Onay reddedildi.
+
+noAccount=Yeni kullanıcı?
+username=Kullanıcı Adı
+usernameOrEmail=Kullanıcı adı veya E-mail
+firstName=Ad
+givenName=Ad
+fullName=Ad Soyad
+lastName=Soyad
+familyName=Soyad
+email=E-Mail
+password=Şifre
+passwordConfirm=Şifre Doğrulama
+passwordNew=Yeni Şifre
+passwordNewConfirm=eni Şifre Doğrulama
+rememberMe=Beni Hatırla
+authenticatorCode=Kimlik Doğrulama Kodu
+address=Adres
+street=Cadde
+locality=Semt
+region=Bölge
+postal_code=Posta Kodu
+country=Ülke
+emailVerified=E-Mail Doğrulandı
+gssDelegationCredential=GSS Yetki Bilgisi
+
+
+profileScopeConsentText=Kullanıcı profili
+emailScopeConsentText=E-Mai Adresi
+addressScopeConsentText=Adres
+phoneScopeConsentText=Telefon Numarası
+offlineAccessScopeConsentText=Çevrimdışı Erişim
+samlRoleListScopeConsentText=Rollerim
+rolesScopeConsentText=Kullanıcı rolleri
+
+loginTotpIntro=Bu hesaba erişmek için bir Tek Kullanımlık Şifre oluşturmalısınız.
+loginTotpStep1=Cep telefonunuzda aşağıdaki uygulamalardan birini yükleyin
+loginTotpStep2=Uygulamayı açın ve barkodu tarayın
+loginTotpStep3=Uygulama tarafından sağlanan tek seferlik kodu girin ve kurulumu tamamlamak için Gönder''i tıklayın.
+loginTotpManualStep2=Uygulamayı açın ve anahtarı girin
+loginTotpManualStep3=Uygulama bunları ayarlamaya izin veriyorsa aşağıdaki yapılandırma değerlerini kullanın.
+loginTotpUnableToScan=Taranamıyor?
+loginTotpScanBarcode=Barkod tara?
+loginOtpOneTime=Tek seferlik kod
+loginTotpType=Tip
+loginTotpAlgorithm=Algoritma
+loginTotpDigits=Basamak
+loginTotpInterval=Aralık
+loginTotpCounter=Sayaç
+
+loginTotp.totp=Zaman Tabanlı
+loginTotp.hotp=Sayaç Tabanlı
+
+
+oauthGrantRequest=Bu erişim ayrıcalıkları veriyor musunuz?
+inResource=içinde
+
+emailVerifyInstruction1=E-posta adresinizi doğrulamak için talimatları içeren bir e-posta size gönderildi.
+emailVerifyInstruction2=E-postanızda doğrulama kodu almadınız mı?
+emailVerifyInstruction3=e-postayı yeniden göndermek için.
+
+emailLinkIdpTitle=Bağlantı {0}
+emailLinkIdp1={1} hesabını {2} hesabınıza bağlayan talimatları içeren bir e-posta size gönderildi.
+emailLinkIdp2=E-postanızda doğrulama kodu almadınız mı?
+emailLinkIdp3=e-postayı yeniden göndermek için.
+emailLinkIdp4=E-postayı farklı tarayıcıda zaten doğruladıysanız
+emailLinkIdp5=devam etmek.
+
+backToLogin=&laquo; Giriş''e geri dön
+
+emailInstruction=Kullanıcı adınızı veya e-posta adresinizi girin ve yeni bir şifre oluşturmaya ilişkin talimatları size göndereceğiz.
+
+copyCodeInstruction=Lütfen bu kodu kopyalayın ve uygulamanıza yapıştırın:
+
+pageExpiredTitle=Sayfanın Süresi Doldu
+pageExpiredMsg1=Giriş işlemini yeniden başlatmak için
+pageExpiredMsg2=Giriş işlemine devam etmek için
+
+personalInfo=Kişisel bilgi:
+role_admin=Admin
+role_realm-admin=Realm Admin
+role_create-realm=Realm Oluştur
+role_create-client=Create client
+role_view-realm=Realm görüntüle
+role_view-users=Kullanıcı görüntüle
+role_view-applications=Uygulamarı gör
+role_view-clients=Clients görüntüle
+role_view-events=Events görüntüle
+role_view-identity-providers=Kimlik sağlayıcılarını görüntüle
+role_manage-realm=Realm Yönet
+role_manage-users=Kullanıcıları Yönet
+role_manage-applications=Uygulamaları Yönet
+role_manage-identity-providers=Kimlik Sağlayıcılarını Yönet
+role_manage-clients=Clients Yönet
+role_manage-events=Events Yönet
+role_view-profile=Profil görüntüle
+role_manage-account=Hesap Yönet
+role_manage-account-links=Hesap bağlantılarını yönet
+role_read-token=Token oku
+role_offline-access=Çevrimdışı erişim
+client_account=Hesap
+client_security-admin-console=Güvenlik Yönetici Konsolu
+client_admin-cli=Admin CLI
+client_realm-management=Realm Yönet
+client_broker=Broker
+
+invalidUserMessage=Geçersiz kullanıcı adı veya şifre.
+invalidEmailMessage=Geçersiz e-posta adresi.
+accountDisabledMessage=Hesap devre dışı, yönetici ile iletişime geçin.
+accountTemporarilyDisabledMessage=Hesabınız geçici olarak kilitlendi, lütfen yöneticiyle iletişime geçin veya daha sonra tekrar deneyin.
+expiredCodeMessage=Oturum zaman aşımına uğradı. Lütfen tekrar giriş yapın.
+expiredActionMessage=Eylem süresi doldu. Lütfen şimdi giriş yapmaya devam edin.
+expiredActionTokenNoSessionMessage=Eylemin süresi doldu.
+expiredActionTokenSessionExistsMessage=Eylem süresi doldu. Lütfen tekrar başlayın.
+
+missingFirstNameMessage=Lütfen ilk adı belirtin.
+missingLastNameMessage=Lütfen soyadı belirtin.
+missingEmailMessage=Lütfen email belirtin.
+missingUsernameMessage=Lütfen kullanıcı adını belirtin.
+missingPasswordMessage=Lütfen şifre belirtin.
+missingTotpMessage=Lütfen kimlik doğrulama kodunu belirtin.
+notMatchPasswordMessage=Şifreler eşleşmiyor.
+
+invalidPasswordExistingMessage=Mevcut şifre geçersiz.
+invalidPasswordBlacklistedMessage=Geçersiz şifre: şifre kara listeye alındı.
+invalidPasswordConfirmMessage=Şifre onayı eşleşmiyor.
+invalidTotpMessage=Geçersiz kimlik doğrulama kodu.
+
+usernameExistsMessage=Kullanıcı adı zaten var.
+emailExistsMessage=Bu e-posta zaten var.
+
+federatedIdentityExistsMessage={0} {1} kullanıcı zaten var. Hesabı bağlamak için lütfen hesap yönetimine giriş yapın.
+
+confirmLinkIdpTitle=Bu Hesap Zaten Mevcut
+federatedIdentityConfirmLinkMessage={0} {1} kullanıcı zaten var. Nasıl devam etmek istersin?
+#federatedIdentityConfirmReauthenticateMessage=Hesabınızı {1} ile bağlamak için {0} olarak doğrulayın
+confirmLinkIdpReviewProfile=Profili gözden geçir
+confirmLinkIdpContinue=Mevcut hesaba ekle
+
+configureTotpMessage=Hesabınızı etkinleştirmek için Mobil Kimlik Doğrulama''yı ayarlamanız gerekiyor.
+updateProfileMessage=Hesabınızı etkinleştirmek için kullanıcı profilinizi güncellemeniz gerekiyor.
+updatePasswordMessage=Hesabınızı etkinleştirmek için şifrenizi değiştirmeniz gerekiyor.
+resetPasswordMessage=Şifreni değiştirmelisin.
+verifyEmailMessage=Hesabınızı etkinleştirmek için e-posta adresinizi doğrulamanız gerekiyor.
+linkIdpMessage=Hesabınızı {0} ile bağlamak için e-posta adresinizi doğrulamanız gerekiyor.
+
+emailSentMessage=Daha fazla talimatla kısa sürede bir e-posta almalısınız.
+emailSendErrorMessage=E-posta gönderilemedi, lütfen daha sonra tekrar deneyin.
+
+accountUpdatedMessage=Hesabın güncellendi.
+accountPasswordUpdatedMessage=Şifreniz güncellenmiştir.
+
+delegationCompleteHeader=Giriş başarılı
+delegationCompleteMessage=Bu tarayıcı penceresini kapatabilir ve konsol uygulamanıza geri dönebilirsiniz.
+delegationFailedHeader=Giriş başarısız
+delegationFailedMessage=Bu tarayıcı penceresini kapatabilir ve konsol uygulamanıza geri dönüp tekrar giriş yapmayı deneyebilirsiniz..
+
+noAccessMessage=Erişim yok
+
+invalidPasswordMinLengthMessage=Geçersiz Şifre: En az {0} karakter uzunluğunda olmalı.
+invalidPasswordMinDigitsMessage=Geçersiz Şifre: En az {0} sayı(lar) içermelidir.
+invalidPasswordMinLowerCaseCharsMessage=Geçersiz Şifre \: En az {0} küçük harf içermelidir.
+invalidPasswordMinUpperCaseCharsMessage=Geçersiz Şifre: En az {0} büyük harf içermelidir.
+invalidPasswordMinSpecialCharsMessage=Geçersiz Şifre: En az {0} özel karakter içermelidir.
+invalidPasswordNotUsernameMessage=Geçersiz Şifre: Kullanıcı adıyla aynı olamaz.
+invalidPasswordRegexPatternMessage=Geçersiz Şifre: Regex Patternine uygun değil.
+invalidPasswordHistoryMessage=Geçersiz Şifre: Son {0} şifreden biri olamaz.
+invalidPasswordGenericMessage=Geçersiz Şifre: yeni şifre şifre politikalarıyla eşleşmiyor.
+
+failedToProcessResponseMessage=Yanıt işlenemedi
+httpsRequiredMessage=HTTPS zorunlu
+realmNotEnabledMessage=Realm aktif değil
+invalidRequestMessage=Geçersiz İstek
+failedLogout=Çıkış başarısız
+unknownLoginRequesterMessage=Bilinmeyen giriş isteği
+loginRequesterNotEnabledMessage=Giriş istemi etkin değil
+bearerOnlyMessage=Yalnızca taşıyıcı uygulamaları tarayıcı girişini başlatmaya izinli değil
+standardFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Standard flow is disabled for the client.
+implicitFlowDisabledMessage=Client is not allowed to initiate browser login with given response_type. Implicit flow is disabled for the client.
+invalidRedirectUriMessage=Geçersiz yönlendirme url''i
+unsupportedNameIdFormatMessage=Desteklenmeyen NameIDFormat
+invalidRequesterMessage=Geçersiz istek
+registrationNotAllowedMessage=Kayıt yapılamaz
+resetCredentialNotAllowedMessage=Sıfırlamasına izin verilmiyor
+
+permissionNotApprovedMessage=İzin onaylanmadı.
+noRelayStateInResponseMessage=Kimlik sağlayıcıdan yanıt olarak geçiş durumu yok.
+insufficientPermissionMessage=Kimliklerin bağlanması için yetersiz izinler.
+couldNotProceedWithAuthenticationRequestMessage=Kimlik sağlayıcıya kimlik doğrulama isteği ile devam edilemedi.
+couldNotObtainTokenMessage=Kimlik sağlayıcıdan token alınamadı.
+unexpectedErrorRetrievingTokenMessage=Kimlik sağlayıcıdan token alırken beklenmeyen bir hata oluştu.
+unexpectedErrorHandlingResponseMessage=Kimlik sağlayıcıdan yanıt alınırken beklenmeyen bir hata oluştu.
+identityProviderAuthenticationFailedMessage=Kimlik doğrulama başarısız oldu. Kimlik sağlayıcıyla kimlik doğrulaması yapılamadı.
+couldNotSendAuthenticationRequestMessage=Kimlik sağlayıcıya kimlik doğrulama isteği gönderilemedi.
+unexpectedErrorHandlingRequestMessage=Kimlik sağlayıcıya kimlik doğrulama isteği işlenirken beklenmeyen bir hata oluştu.
+invalidAccessCodeMessage=Geçersiz giriş kodu.
+sessionNotActiveMessage=Oturum etkin değil.
+invalidCodeMessage=Bir hata oluştu, lütfen başvurunuz aracılığıyla tekrar giriş yapın.
+identityProviderUnexpectedErrorMessage=Kimlik sağlayıcıyla kimlik doğrulaması yapılırken beklenmeyen bir hata oluştu
+identityProviderNotFoundMessage=Tanımlayıcı ile kimlik sağlayıcı bulunamadı.
+identityProviderLinkSuccess=E-postanızı başarıyla doğruladınız. Lütfen orijinal tarayıcınıza geri dönün ve giriş yapın.
+staleCodeMessage=Bu sayfa artık geçerli değil, lütfen uygulamanıza geri dönün ve tekrar giriş yapın
+realmSupportsNoCredentialsMessage=Realm herhangi bir kimlik bilgisi türünü desteklemiyor.
+identityProviderNotUniqueMessage=Realm çoklu kimlik sağlayıcılarını destekler. Kimlik doğrulamak için hangi kimlik sağlayıcısının kullanılması gerektiğini belirleyemedi.
+emailVerifiedMessage=E-posta adresiniz doğrulandı.
+staleEmailVerificationLink=Tıkladığınız bağlantı eski bir bağlantıdır ve artık geçerli değil. Belki de e-postanızı zaten doğruladınız.
+identityProviderAlreadyLinkedMessage={0} tarafından döndürülen birleşik kimlik, başka bir kullanıcıyla zaten bağlantılı.
+confirmAccountLinking={1} kimlik sağlayıcısının hesabını {0} hesabınızla ilişkilendirmeyi onaylayın.
+confirmEmailAddressVerification={0} e-posta adresinin geçerliliğini onaylayın.
+confirmExecutionOfActions=Aşağıdaki eylemleri gerçekleştirin
+
+backToApplication=&laquo; Uygulamaya Dön
+missingParameterMessage=Eksik parametreler\: {0}
+clientNotFoundMessage=İstemci Bulunamadı.
+clientDisabledMessage=İstemci engelli.
+invalidParameterMessage=Geçersiz Paremetreler\: {0}
+alreadyLoggedIn=Zaten giriş yaptınız.
+differentUserAuthenticated=Bu oturumda zaten farklı kullanıcı '' {0} '' olarak doğrulanmışsınız. Lütfen önce çıkış yapınız.
+brokerLinkingSessionExpired=İstenen broker hesabı bağlanıyor, ancak mevcut oturum artık geçerli değil.
+proceedWithAction=» Devam etmek için buraya tıklayın
+
+requiredAction.CONFIGURE_TOTP=OTP Ayarla
+requiredAction.TERMS_AND_CONDITIONS=Şartlar ve Koşullar
+requiredAction.UPDATE_PASSWORD=Şifre güncelle
+requiredAction.UPDATE_PROFILE=Profili Güncelle
+requiredAction.VERIFY_EMAIL=E-mail''i doğrula
+
+doX509Login=Olarak giriş yapacaksınız\:
+clientCertificate=X509 istemci sertifikası\:
+noCertificate=[Sertifika Yok]
+
+
+pageNotFound=Sayfa Bulunamadı
+internalServerError=Bir iç sunucu hatası oluştu
+
+console-username=Kullanıcı adı:
+console-password=Parola:
+console-otp=Tek seferlik şifre:
+console-new-password=Yeni şifre:
+console-confirm-password=Şifreyi Onayla:
+console-update-password=Şifrenizin güncellenmesi gerekiyor.
+console-verify-email=E-posta adresinizi doğrulamanız gerekiyor. Bir doğrulama kodu içeren {0} adresine bir e-posta gönderildi. Lütfen bu kodu aşağıdaki girdiye giriniz.
+console-email-code=E-posta Kodu:
+console-accept-terms=Şartları kabul et? [e/h]:
+console-accept=e
+
+readOnlyUsernameMessage=Yazma korumalı olduğundan kullanıcı adınızı değiştiremezsiniz.
diff --git a/themes/custom-theme-template/login/messages/messages_uk.properties b/themes/custom-theme-template/login/messages/messages_uk.properties
new file mode 100755
index 0000000000000000000000000000000000000000..d8c28a1144abf19a929a9a0d58ff1abc6a112d2c
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_uk.properties
@@ -0,0 +1,490 @@
+doLogIn=Увійти
+doRegister=Зареєструватися
+doRegisterSecurityKey=Зареєструватися
+doCancel=Скасувати
+doSubmit=Надіслати
+doBack=Назад
+doYes=Так
+doNo=Ні
+doContinue=Продовжити
+doIgnore=Ігнорувати
+doAccept=Прийняти
+doDecline=Відхилити
+doForgotPassword=Забули пароль?
+doClickHere=Натисніть тут
+doImpersonate=Імперсоналізуватися
+doTryAgain=Спробуйте знову
+doTryAnotherWay=Спробуйте інший спосіб
+doConfirmDelete=Підтвердити видалення
+errorDeletingAccount=Під час видалення облікового запису сталася помилка
+deletingAccountForbidden=У вас недостатньо прав для видалення власного облікового запису, зверніться до адміністратора.
+kerberosNotConfigured=Kerberos не налаштовано
+kerberosNotConfiguredTitle=Kerberos не налаштовано
+bypassKerberosDetail=Або ви не ввійшли в систему через Kerberos, або ваш браузер не налаштований для входу через Kerberos. Натисніть «Продовжити», щоб увійти іншим способом
+kerberosNotSetUp=Kerberos не налаштовано. Ви не можете увійти.
+registerTitle=Зареєструватися
+loginAccountTitle=Увійдіть у свій обліковий запис
+loginTitle=Увійти в {0}
+loginTitleHtml={0}
+impersonateTitle={0} Видавати себе за користувача
+impersonateTitleHtml=<strong>{0}</strong> Видавати себе за користувача
+realmChoice=Realm
+unknownUser=Невідомий користувач
+loginTotpTitle=Налаштування мобільного автентифікатора
+loginProfileTitle=Оновити інформацію облікового запису
+loginIdpReviewProfileTitle=Оновити інформацію облікового запису
+loginTimeout=Час очікування вашої спроби входу минув. Вхід почнеться з початку.
+reauthenticate=Будь ласка, пройдіть повторну автентифікацію, щоб продовжити
+oauthGrantTitle=Надати доступ до {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=Переконайтеся, що Ви довіряєте {0}, дізнавшись, як {0} оброблятиме Ваші дані.
+oauthGrantReview=Ви можете переглянути
+oauthGrantTos=умови обслуговування.
+oauthGrantPolicy=політика конфіденційності.
+errorTitle=Нам шкода...
+errorTitleHtml=<strong>Вибачте</strong> ...
+emailVerifyTitle=Підтвердження електронної пошти
+emailForgotTitle=Забули пароль?
+updateEmailTitle=Оновити адресу електронної пошти
+emailUpdateConfirmationSentTitle=Електронний лист із підтвердженням надіслано
+emailUpdateConfirmationSent=Електронний лист із підтвердженням надіслано на адресу {0}. Слідуйте вказівкам, щоб завершити оновлення адреси електронної пошти.
+emailUpdatedTitle=Адреса електронної пошти оновлена
+emailUpdated=Електронна адреса облікового запису була успішно оновлена на {0}.
+updatePasswordTitle=Оновити пароль
+codeSuccessTitle=Код успіху
+codeErrorTitle=Код помилки\: {0}
+displayUnsupported=Запитуваний тип дисплея не підтримується
+browserRequired=Браузер потрібен для входу
+browserContinue=Браузер потрібен для завершення входу
+browserContinuePrompt=Відкрити браузер і продовжити вхід? [y/n]:
+browserContinueAnswer=y
+
+termsTitle=Умови
+termsText=<p>Положення та умови повинні бути визначені</p>
+termsPlainText=Положення та умови, які будуть визначені.
+termsAcceptanceRequired=Ви повинні погодитися з умовами.
+acceptTerms=Я погоджуюсь з умовами
+
+recaptchaFailed=Недійсний Recaptcha
+recaptchaNotConfigured=Recaptcha потрібна, але не налаштована
+consentDenied=Згода відхилена.
+
+noAccount=Новий користувач?
+username=Ім''я користувача
+usernameOrEmail=Ім''я користувача або електронна пошта
+firstName=Ім''я
+givenName=Ім''я
+fullName=Повне ім''я
+lastName=Прізвище
+familyName=Прізвище
+email=Електронна пошта
+password=Пароль
+passwordConfirm=Підтвердити пароль
+passwordNew=Новий пароль
+passwordNewConfirm=Нове підтвердження пароля
+hidePassword=Приховати пароль
+showPassword=Показати пароль
+rememberMe=Запам''ятати мене
+authenticatorCode=Одноразовий код
+address=Адреса
+street=Вулиця
+locality=Місто
+region=Область
+postal_code=Поштовий індекс
+country=Країна
+emailVerified=Адреса електронної пошти підтверджена
+website=Веб-сторінка
+phoneNumber=Номер телефону
+phoneNumberVerified=Номер телефону перевірено
+gender=Стать
+birthday=Дата народження
+zoneinfo=Часовий пояс
+gssDelegationCredential=Облікові дані делегування GSS
+logoutOtherSessions=Вийти з інших пристроїв
+
+profileScopeConsentText=Профіль користувача
+emailScopeConsentText=Адреса електронної пошти
+addressScopeConsentText=Адреса
+phoneScopeConsentText=Номер телефону
+offlineAccessScopeConsentText=Доступ офлайн
+samlRoleListScopeConsentText=Мої ролі
+rolesScopeConsentText=Ролі користувача
+
+restartLoginTooltip=Перезапустити вхід
+
+loginTotpIntro=Вам потрібно налаштувати генератор одноразових паролів для доступу до цього облікового запису
+loginTotpStep1=Встановіть на свій мобільний телефон один із наступних застосунків:
+loginTotpStep2=Відкрийте застосунок та відскануйте штрих-код:
+loginTotpStep3=Введіть одноразовий код, наданий застосунком, і натисніть "Надіслати", щоб завершити налаштування.
+loginTotpStep3DeviceName=Введіть назву пристрою, щоб допомогти вам керувати пристроями OTP.
+loginTotpManualStep2=Відкрийте застосунок та введіть ключ:
+loginTotpManualStep3=Використовуйте такі значення конфігурації, якщо застосунок дозволяє їх установку:
+loginTotpUnableToScan=Неможливо сканувати?
+loginTotpScanBarcode=Сканувати штрих-код?
+loginCredential=Облікові дані
+loginOtpOneTime=Одноразовий код
+loginTotpType=Тип
+loginTotpAlgorithm=Алгоритм
+loginTotpDigits=Цифри
+loginTotpInterval=Інтервал
+loginTotpCounter=Лічильник
+loginTotpDeviceName=Назва пристрою
+
+loginTotp.totp=На основі часу
+loginTotp.hotp=На основі лічильника
+
+totpAppFreeOTPName=Безкоштовний OTP
+totpAppGoogleName=Автентифікатор Google
+totpAppMicrosoftAuthenticatorName=Автентифікатор Microsoft
+
+loginChooseAuthenticator=Виберіть метод входу
+
+oauthGrantRequest=Ви згодні надати ці привілеї доступу?
+inResource=у
+
+oauth2DeviceVerificationTitle=Вхід на пристрій
+verifyOAuth2DeviceUserCode=Введіть код, наданий Вашим пристроєм, і натисніть "Надіслати"
+oauth2DeviceInvalidUserCodeMessage=Недійсний код, спробуйте ще раз.
+oauth2DeviceExpiredUserCodeMessage=Термін дії коду минув. Поверніться до свого пристрою та спробуйте підключитися знову.
+oauth2DeviceVerificationCompleteHeader=Успішний вхід на пристрій
+oauth2DeviceVerificationCompleteMessage=Ви можете закрити це вікно браузера та повернутися до свого пристрою.
+oauth2DeviceVerificationFailedHeader=Помилка входу на пристрій
+oauth2DeviceVerificationFailedMessage=Ви можете закрити це вікно браузера, повернутися до свого пристрою та спробувати підключитися знову.
+oauth2DeviceConsentDeniedMessage=Згода на підключення пристрою відмовлена.
+oauth2DeviceAuthorizationGrantDisabledMessage=Клієнту не дозволено ініціювати дозвіл авторизації пристрою OAuth 2.0. Цей процес вимкнено для клієнта.
+
+emailVerifyInstruction1=Електронний лист з інструкціями щодо підтвердження Вашої адреси електронної пошти було надіслано на Вашу адресу {0}.
+emailVerifyInstruction2=Не отримали код підтвердження на вашу електронну пошту?
+emailVerifyInstruction3=щоб повторно надіслати електронний лист.
+
+emailLinkIdpTitle=Посилання {0}
+emailLinkIdp1=Вам був надісланий електронний лист з інструкціями щодо зв''язування облікового запису {0} {1} з вашим обліковим записом {2}.
+emailLinkIdp2=Не отримали код підтвердження на вашу електронну пошту?
+emailLinkIdp3=для повторного відправлення листа.
+emailLinkIdp4=Якщо ви вже підтвердили електронну адресу в іншому браузері
+emailLinkIdp5=для продовження.
+
+backToLogin=&laquo; Назад до входу
+
+emailInstruction=Введіть своє ім''я користувача або адресу електронної пошти, і ми надішлемо Вам інструкції щодо створення нового пароля.
+emailInstructionUsername=Введіть своє ім''я користувача, і ми надішлемо Вам інструкції щодо створення нового пароля.
+
+copyCodeInstruction=Будь ласка, скопіюйте цей код і вставте його у свій застосунок:
+
+pageExpiredTitle=Термін дії сторінки закінчився
+pageExpiredMsg1=Щоб перезапустити процес входу
+pageExpiredMsg2=Щоб продовжити процес входу
+
+personalInfo=Особиста інформація:
+role_admin=Адміністратор
+role_realm-admin=Адміністратор realm
+role_create-realm=Створення realm
+role_create-client=Створення клієнта
+role_view-realm=Перегляд realm
+role_view-users=Перегляд користувачів
+role_view-applications=Перегляд застосунків
+role_view-clients=Перегляд клієнтів
+role_view-events=Перегляд подій
+role_view-identity-providers=Перегляд провайдерів облікових записів
+role_manage-realm=Керування realm
+role_manage-users=Керування користувачами
+role_manage-applications=Керування застосунками
+role_manage-identity-providers=Керування провайдерами облікових записів
+role_manage-clients=Керування клієнтами
+role_manage-events=Керування подіями
+role_view-profile=Перегляд профілю
+role_manage-account=Керування обліковим записом
+role_manage-account-links=Керування зв''язаними обліковими записами
+role_read-token=Перегляд токену
+role_offline-access=Офлайн-доступ
+client_account=Обліковий запис
+client_account-console=Консоль облікового запису
+client_security-admin-console=Консоль адміністратора безпеки
+client_admin-cli=Admin CLI
+client_realm-management=Керування realm
+client_broker=Брокер
+
+requiredFields=Обов''язкові поля
+
+invalidUserMessage=Невірне ім''я користувача або пароль.
+invalidUsernameMessage=Невірне ім''я користувача.
+invalidUsernameOrEmailMessage=Невірне ім''я користувача або адреса електронної пошти.
+invalidPasswordMessage=Невірний пароль.
+invalidEmailMessage=Невірна адреса електронної пошти.
+accountDisabledMessage=Обліковий запис заблоковано, зверніться до адміністратора.
+accountTemporarilyDisabledMessage=Обліковий запис тимчасово заблоковано; зверніться до адміністратора або повторіть спробу пізніше.
+expiredCodeMessage=Час очікування входу закінчився. Увійдіть знову.
+expiredActionMessage=Термін дії закінчився. Будь ласка, увійдіть знову.
+expiredActionTokenNoSessionMessage=Термін дії закінчився.
+expiredActionTokenSessionExistsMessage=Термін дії минув. Будь ласка, почніть знову.
+sessionLimitExceeded=Перевищено ліміт по кількості сесій
+
+missingFirstNameMessage=Будь ласка, вкажіть ім''я.
+missingLastNameMessage=Будь ласка, вкажіть прізвище.
+missingEmailMessage=Будь ласка, вкажіть адресу електронної пошти.
+missingUsernameMessage=Будь ласка, вкажіть ім''я користувача.
+missingPasswordMessage=Будь ласка, вкажіть пароль.
+missingTotpMessage=Будь ласка, вкажіть код автентифікатора.
+missingTotpDeviceNameMessage=Будь ласка, вкажіть назву пристрою.
+notMatchPasswordMessage=Паролі не збігаються.
+
+error-invalid-value=Невірне значення.
+error-invalid-blank=Будь ласка, вкажіть значення.
+error-empty=Будь ласка, вкажіть значення.
+error-invalid-length=Кількість символів повинна бути не менше {1} і не більше {2}.
+error-invalid-length-too-short=Кількість символів повинна бути не менше {1}.
+error-invalid-length-too-long=Кількість символів повинна бути не більше {2}.
+error-invalid-email=Невірна адреса електронної пошти.
+error-invalid-number=Невірне число.
+error-number-out-of-range=Число повинно бути не менше {1} і не більше {2}.
+error-number-out-of-range-too-small=Число повинно бути не менше {1}.
+error-number-out-of-range-too-big=Число повинно бути не більше {2}.
+error-pattern-no-match=Невірне значення.
+error-invalid-uri=Невірний URL.
+error-invalid-uri-scheme=Невірна схема URL.
+error-invalid-uri-fragment=Невірний фрагмент URL.
+error-user-attribute-required=Будь ласка, вкажіть атрибут.
+error-invalid-date=Невірна дата.
+error-user-attribute-read-only=Це поле доступне лише для читання.
+error-username-invalid-character=Значення містить невірний символ.
+error-person-name-invalid-character=Значення містить невірний символ.
+error-reset-otp-missing-id=Будь ласка, виберіть конфігурацію OTP.
+
+invalidPasswordExistingMessage=Невірний існуючий пароль.
+invalidPasswordBlacklistedMessage=Невірний пароль: пароль у чорному списку.
+invalidPasswordConfirmMessage=Підтвердження паролю не збігається.
+invalidTotpMessage=Невірний код автентифікатора.
+
+usernameExistsMessage=Ім''я користувача вже існує.
+emailExistsMessage=Адреса електронної пошти вже існує.
+
+federatedIdentityExistsMessage=Користувач з {0} {1} вже існує. Будь ласка, увійдіть до системи керування обліковим записом, щоб зв''язати обліковий запис.
+federatedIdentityUnavailableMessage=Користувач {0}, автентифікований провайдером облікових записів {1}, не існує. Будь ласка, зверніться до адміністратора.
+federatedIdentityUnmatchedEssentialClaimMessage=ID-токен, виданий провайдером облікових записів, не відповідає налаштуванням. Будь ласка, зверніться до свого адміністратора.
+
+confirmLinkIdpTitle=Обліковий запис уже існує
+federatedIdentityConfirmLinkMessage=Користувач із {0} {1} вже існує. Бажаєте продовжити?
+federatedIdentityConfirmReauthenticateMessage=Пройдіть автентифікацію, щоб зв''язати свій обліковий запис із {0}
+nestedFirstBrokerFlowMessage=Користувач {0} {1} не зв''язаний з жодним відомим користувачем.
+confirmLinkIdpReviewProfile=Переглянути профіль
+confirmLinkIdpContinue=Додати до існуючого облікового запису
+
+configureTotpMessage=Вам потрібно налаштувати Mobile Authenticator, щоб активувати обліковий запис.
+configureBackupCodesMessage=Вам потрібно налаштувати резервні коди, щоб активувати обліковий запис.
+updateProfileMessage=Вам потрібно оновити свій профіль користувача, щоб активувати обліковий запис.
+updatePasswordMessage=Вам потрібно змінити пароль, щоб активувати обліковий запис.
+updateEmailMessage=Вам потрібно оновити адресу електронної пошти, щоб активувати обліковий запис.
+resetPasswordMessage=Вам потрібно змінити пароль.
+verifyEmailMessage=Вам потрібно підтвердити адресу електронної пошти, щоб активувати обліковий запис.
+linkIdpMessage=Вам потрібно підтвердити свою адресу електронної пошти, щоб зв''язати обліковий запис із {0}.
+
+emailSentMessage=Невдовзі Ви маєте отримати електронний лист із подальшими інструкціями.
+emailSendErrorMessage=Не вдалося надіслати листа на електронну пошту, повторіть спробу пізніше.
+
+accountUpdatedMessage=Ваш обліковий запис оновлено.
+accountPasswordUpdatedMessage=Ваш пароль оновлено.
+
+delegationCompleteHeader=Вхід успішний
+delegationCompleteMessage=Ви можете закрити це вікно браузера та повернутися до вашої консольної програми.
+delegationFailedHeader=Помилка входу
+delegationFailedMessage=Ви можете закрити це вікно браузера, повернутися до консольної програми та спробувати увійти знову.
+
+noAccessMessage=Немає доступу
+
+invalidPasswordMinLengthMessage=Невірний пароль: довжина пароля повинна бути не менше {0} символів(а).
+invalidPasswordMaxLengthMessage=Невірний пароль: довжина пароля повинна бути не більше {0} символів(а).
+invalidPasswordMinDigitsMessage=Невірний пароль: пароль має містити принаймні {0} цифр.
+invalidPasswordMinLowerCaseCharsMessage=Невірний пароль: пароль має містити щонайменше {0} символів(а) у нижньому регістру.
+invalidPasswordMinUpperCaseCharsMessage=Невірний пароль: пароль має містити щонайменше {0} символів(а) у верхньому регістрі.
+invalidPasswordMinSpecialCharsMessage=Невірний пароль: пароль має містити щонайменше {0} спеціальних символів(а).
+invalidPasswordNotUsernameMessage=Невірний пароль: пароль не повинен збігатися з іменем користувача.
+invalidPasswordNotEmailMessage=Невірний пароль: пароль не повинен збігатися з адресою електронної пошти.
+invalidPasswordRegexPatternMessage=Невірний пароль: пароль не відповідає шаблону(ам) регулярного виразу.
+invalidPasswordHistoryMessage=Недійсний пароль: пароль не повинен збігатися з жодним з останніх {0} паролів.
+invalidPasswordGenericMessage=Невірний пароль: новий пароль не відповідає політиці паролів.
+
+failedToProcessResponseMessage=Не вдалося обробити відповідь
+httpsRequiredMessage=Потрібен HTTPS
+realmNotEnabledMessage=Realm не включений
+invalidRequestMessage=Невірний запит
+successLogout=Ви вийшли з системи
+failedLogout=Помилка виходу
+unknownLoginRequesterMessage=Невідомий клієнт
+loginRequesterNotEnabledMessage=Клієнт відключений
+bearerOnlyMessage=Застосункам, які працюють лише з носієм, заборонено ініціювати вхід у браузер
+standardFlowDisabledMessage=Клієнту не дозволено ініціювати вхід у браузер із вказаним response_type. Standard flow вимкнено для клієнта.
+implicitFlowDisabledMessage=Клієнту не дозволено ініціювати вхід у браузер із вказаним response_type. Implicit flow вимкнено для клієнта.
+invalidRedirectUriMessage=Невірний uri перенаправлення
+unsupportedNameIdFormatMessage=NameIDFormat не підтримується
+invalidRequesterMessage=Невірний клієнт
+registrationNotAllowedMessage=Реєстрація не дозволена
+resetCredentialNotAllowedMessage=Скинути облікові дані заборонено
+
+permissionNotApprovedMessage=Дозвіл не схвалено.
+noRelayStateInResponseMessage=Немає стану ретрансляції у відповіді від провайдера облікових записів.
+insufficientPermissionMessage=Недостатньо дозволів для зв''язування облікових записів.
+couldNotProceedWithAuthenticationRequestMessage=Не вдалося продовжити запит автентифікації до провайдера облікових записів.
+couldNotObtainTokenMessage=Не вдалося отримати токен від провайдера облікових записів.
+unexpectedErrorRetrievingTokenMessage=Неочікувана помилка під час отримання токену від провайдера облікових записів.
+unexpectedErrorHandlingResponseMessage=Неочікувана помилка під час обробки відповіді від провайдера облікових записів
+identityProviderAuthenticationFailedMessage=Помилка автентифікації. Не вдалося автентифікуватися за допомогою провайдера облікових записів.
+couldNotSendAuthenticationRequestMessage=Не вдалося надіслати запит автентифікації до провайдера облікових записів.
+unexpectedErrorHandlingRequestMessage=Неочікувана помилка під час обробки запиту автентифікації до провайдера облікових записів.
+invalidAccessCodeMessage=Невірний код доступу.
+sessionNotActiveMessage=Сесія неактивна.
+invalidCodeMessage=Сталася помилка, будь ласка, увійдіть знову через ваш застосунок.
+cookieNotFoundMessage=Файл cookie не знайдено. Переконайтеся, що файли cookie увімкнено у вашому браузері.
+insufficientLevelOfAuthentication=Запитаний рівень автентифікації не був задоволений.
+identityProviderUnexpectedErrorMessage=Неочікувана помилка під час автентифікації за допомогою провайдера облікових записів.
+identityProviderMissingStateMessage=Відсутній параметр стану у відповіді від провайдера облікових записів.
+identityProviderMissingCodeOrErrorMessage=Відсутній код або параметр помилки у відповіді від провайдера облікових записів.
+identityProviderInvalidResponseMessage=Невірна відповідь від провайдера облікових записів.
+identityProviderInvalidSignatureMessage=Невірний підпис у відповіді від провайдера облікових записів.
+identityProviderNotFoundMessage=Не вдалося знайти провайдера облікових записів.
+identityProviderLinkSuccess=Ви успішно підтвердили свою адресу електронної пошти. Будь ласка, поверніться до свого браузера та продовжте вхід.
+staleCodeMessage=Ця сторінка більше не дійсна, будь ласка, поверніться до свого застосунку та увійдіть знову
+realmSupportsNoCredentialsMessage=Realm не підтримує жодного типу облікових даних.
+credentialSetupRequired=Не вдається увійти, потрібні налаштування облікових даних.
+identityProviderNotUniqueMessage=Realm підтримує кілька провайдера облікових записів. Не вдалося визначити, якого провайдера облікових записів слід використовувати для автентифікації.
+emailVerifiedMessage=Вашу адресу електронної пошти було перевірено.
+emailVerifiedAlreadyMessage=Вашу адресу електронної пошти вже перевірено.
+staleEmailVerificationLink=Посилання, на яке Ви натиснули, є застарілим і більше не працює. Можливо, Ви вже підтвердили свою електронну адресу.
+identityProviderAlreadyLinkedMessage=Обліковий запис, повернутий {0}, вже зв''язаний з іншим користувачем.
+confirmAccountLinking=Підтвердити зв''язування облікового запису {0} провайдера облікових записів {1} з вашим обліковим записом.
+confirmEmailAddressVerification=Підтвердити адресу електронної пошти {0}.
+confirmExecutionOfActions=Виконайте наступні дії
+
+backToApplication=&laquo; Назад до застосунку
+missingParameterMessage=Відсутні параметри\: {0}
+clientNotFoundMessage=Клієнта не знайдено.
+clientDisabledMessage=Клієнта вимкнено.
+invalidParameterMessage=Невірний параметр\: {0}
+alreadyLoggedIn=Ви вже ввійшли в систему.
+differentUserAuthenticated=Ви вже аутентифіковані як інший користувач ''{0}'' у цій сесії. Спочатку вийдіть.
+brokerLinkingSessionExpired=Запитано зв''язування облікового запису брокера, але поточна сесія більше недійсна.
+proceedWithAction=&raquo; Натисніть тут, щоб продовжити
+acrNotFulfilled=Вимоги автентифікації не виконано
+
+requiredAction.CONFIGURE_TOTP=Налаштувати OTP
+requiredAction.TERMS_AND_CONDITIONS=Положення та умови
+requiredAction.UPDATE_PASSWORD=Оновити пароль
+requiredAction.UPDATE_PROFILE=Оновити профіль
+requiredAction.VERIFY_EMAIL=Підтвердити адресу електронної пошти
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=Генерувати коди відновлення
+requiredAction.webauthn-register-passwordless=Реєстрація Webauthn без пароля
+
+invalidTokenRequiredActions=Необхідні дії, які містяться в посиланні, недійсні
+
+doX509Login=Ви увійдете як\:
+clientCertificate=сертифікат клієнта X509\:
+noCertificate=[Немає сертифіката]
+
+
+pageNotFound=Сторінка не знайдена
+internalServerError=Сталася внутрішня помилка сервера
+
+console-username=Ім''я користувача:
+console-password=Пароль:
+console-otp=Одноразовий пароль:
+console-new-password=Новий пароль:
+console-confirm-password=Підтвердити пароль:
+console-update-password=Потрібно оновити ваш пароль.
+console-verify-email=Вам потрібно підтвердити свою адресу електронної пошти. Ми надіслали електронний лист на адресу {0}, який містить код підтвердження. Введіть цей код у поле нижче.
+console-email-code=Код з електронної пошти:
+console-accept-terms=Прийняти умови? [y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=Інформація про користувача
+openshift.scope.user_check-access=Інформація про доступ користувача
+openshift.scope.user_full=Повний доступ
+openshift.scope.list-projects=Список проектів
+
+# SAML authentication
+saml.post-form.title=Переадресація автентифікації
+saml.post-form.message=Переадресація, будь ласка, зачекайте.
+saml.post-form.js-disabled=JavaScript вимкнено. Ми наполегливо рекомендуємо ввімкнути його. Щоб продовжити, натисніть кнопку нижче.
+saml.artifactResolutionServiceInvalidResponse=Не вдається вирішити артефакт.
+
+# authenticators
+otp-display-name=Застосунок автентифікації
+otp-help-text=Введіть код підтвердження з застосунку автентифікації.
+otp-reset-description=Яку конфігурацію OTP слід видалити?
+password-display-name=Пароль
+password-help-text=Увійдіть, ввівши свій пароль.
+auth-username-form-display-name=Ім''я користувача
+auth-username-form-help-text=Почніть вхід, ввівши своє ім''я користувача
+auth-username-password-form-display-name=Ім''я користувача та пароль
+auth-username-password-form-help-text=Увійдіть, ввівши своє ім''я користувача та пароль.
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=Код відновлення автентифікації
+auth-recovery-authn-code-form-help-text=Введіть код відновлення автентифікації з попередньо створеного списку.
+auth-recovery-code-info-message=Введіть код відновлення.
+auth-recovery-code-prompt=Код відновлення #{0}
+auth-recovery-code-header=Увійдіть за допомогою коду відновлення автентифікації
+recovery-codes-error-invalid=Недійсний код відновлення автентифікації
+recovery-code-config-header=Коди відновлення автентифікації
+recovery-code-config-warning-title=Коди відновлення більше не можливо буде переглянути після виходу з цієї сторінки
+recovery-code-config-warning-message=Обов''язково роздрукуйте, завантажте або скопіюйте їх до менеджера паролів і збережіть. Скасування цього налаштування призведе до видалення цих кодів відновлення з вашого облікового запису.
+recovery-codes-print=Друк
+recovery-codes-download=Завантажити
+recovery-codes-copy=Копіювати
+recovery-codes-copied=Скопійовано
+recovery-codes-confirmation-message=Я зберіг ці коди в безпечному місці
+recovery-codes-action-complete=Завершити налаштування
+recovery-codes-action-cancel=Скасувати налаштування
+recovery-codes-download-file-header=Зберігайте ці коди відновлення в безпечному місці.
+recovery-codes-download-file-description=Коди відновлення — це одноразові паролі, які дозволяють Вам увійти до свого облікового запису, якщо у Вас немає доступу до автентифікатора.
+recovery-codes-download-file-date=Ці коди були згенеровані
+recovery-codes-label-default=Коди відновлення
+
+# WebAuthn
+webauthn-display-name=Ключ безпеки
+webauthn-help-text=Використовуйте свій ключ безпеки для входу.
+webauthn-passwordless-display-name=Ключ безпеки
+webauthn-passwordless-help-text=Використовуйте свій ключ безпеки для входу без пароля.
+webauthn-login-title=Ключ безпеки для входу
+webauthn-registration-title=Реєстрація ключа безпеки
+webauthn-available-authenticators=Доступні ключі безпеки
+webauthn-unsupported-browser-text=WebAuthn не підтримується цим браузером. Спробуйте інший або зверніться до адміністратора.
+webauthn-doAuthenticate=Увійти за допомогою ключа безпеки
+webauthn-createdAt-label=Створено
+
+# WebAuthn Error
+webauthn-error-title=Помилка ключа безпеки
+webauthn-error-registration=Не вдалося зареєструвати ваш ключ безпеки.<br/> {0}
+webauthn-error-api-get=Помилка автентифікації за допомогою ключа безпеки.<br/> {0}
+webauthn-error-different-user=Перший автентифікований користувач не є тим, хто автентифікований ключем безпеки.
+webauthn-error-auth-verification=Результат автентифікації ключа безпеки невірний.<br/> {0}
+webauthn-error-register-verification=Результат реєстрації ключа безпеки невірний.<br/> {0}
+webauthn-error-user-not-found=Невідомий користувач автентифікований за допомогою ключа безпеки.
+
+# Identity provider
+identity-provider-redirector=Підключіться до іншого провайдера облікових записів
+identity-provider-login-label=Або увійдіть за допомогою
+idp-email-verification-display-name=Підтвердження електронної пошти
+idp-email-verification-help-text=Підв''яжіть свій обліковий запис, підтвердивши свою електронну адресу.
+idp-username-password-form-display-name=Ім''я користувача та пароль
+idp-username-password-form-help-text=Підв''яжіть свій обліковий запис, увійшовши в систему.
+
+finalDeletionConfirmation=Якщо ви видалите свій обліковий запис, його неможливо буде відновити. Щоб зберегти обліковий запис, натисніть «Скасувати».
+irreversibleAction=Ця дія незворотна
+deleteAccountConfirm=Видалити підтвердження облікового запису
+
+deletingImplies=Видалення Вашого облікового запису передбачає:
+errasingData=Видалення усіх Ваших даних
+loggingOutImmediately=Негайний вихід із системи
+accountUnusable=Будь-яке подальше використання застосунку буде неможливим з цим обліковим записом
+userDeletedSuccessfully=Користувача успішно видалено
+
+access-denied=У доступі відмовлено
+access-denied-when-idp-auth=У доступі відмовлено під час автентифікації за допомогою {0}
+
+frontchannel-logout.title=Вихід
+frontchannel-logout.message=Ви виходите з наступних застосунків
+logoutConfirmTitle=Вихід
+logoutConfirmHeader=Ви бажаєте вийти?
+doLogout=Вийти
+
+readOnlyUsernameMessage=Ви не можете оновити своє ім''я користувача, оскільки воно доступне лише для читання.
diff --git a/themes/custom-theme-template/login/messages/messages_zh_CN.properties b/themes/custom-theme-template/login/messages/messages_zh_CN.properties
new file mode 100644
index 0000000000000000000000000000000000000000..f9007d56a581d52ff4ef6a69c1715c18c7967296
--- /dev/null
+++ b/themes/custom-theme-template/login/messages/messages_zh_CN.properties
@@ -0,0 +1,522 @@
+doLogIn=登录
+doRegister=注册
+doRegisterSecurityKey=注册
+doCancel=取消
+doSubmit=提交
+doBack=返回
+doYes=是
+doNo=否
+doContinue=继续
+doIgnore=忽略
+doAccept=接受
+doDecline=拒绝
+doForgotPassword=忘记密码?
+doClickHere=点击这里
+doImpersonate=模拟
+doTryAgain=重试
+doTryAnotherWay=尝试其他方法
+doConfirmDelete=确认删除
+errorDeletingAccount=删除账户时遇到错误
+deletingAccountForbidden=您没有权限删除您的账户,请联系管理员。
+kerberosNotConfigured=Kerberos 没有配置
+kerberosNotConfiguredTitle=Kerberos 没有配置
+bypassKerberosDetail=您没有通过 Kerberos 登录 或者您的浏览器没有设置 Kerberos 登录. 请点击继续通过其他途径登录。
+kerberosNotSetUp=Kerberos 没有配置,您无法登录。
+registerTitle=注册
+loginAccountTitle=登录到您的账户
+loginTitle=登录到 {0}
+loginTitleHtml={0}
+impersonateTitle={0} 模拟用户
+impersonateTitleHtml=<strong>{0}</strong>模拟用户
+realmChoice=域
+unknownUser=未知用户
+loginTotpTitle=配置验证器
+loginProfileTitle=更新账户信息
+loginIdpReviewProfileTitle=更新账户信息
+loginTimeout=您的登录已超时,请重新开始登录。
+reauthenticate=请重新授权以继续
+oauthGrantTitle=授权给 {0}
+oauthGrantTitleHtml={0}
+oauthGrantInformation=通过了解 {0} 将如何处理您的数据,确保您信任 {0} 。
+oauthGrantReview=您可以审阅
+oauthGrantTos=服务条款。
+oauthGrantPolicy=隐私政策。
+errorTitle=很抱歉...
+errorTitleHtml=我们<strong>很抱歉</strong> ...
+emailVerifyTitle=验证电子邮箱地址
+emailForgotTitle=忘记密码了吗?
+updateEmailTitle=更新点在邮箱
+emailUpdateConfirmationSentTitle=已发送确认邮件。
+emailUpdateConfirmationSent=已向 {0} 发送了一封确认邮件. 请按照前面的指示来更新电子邮箱。
+emailUpdatedTitle=电子邮箱已更新。
+emailUpdated=您的账户的电子邮箱已经成功更新为 {0}.
+updatePasswordTitle=更新密码
+codeSuccessTitle=成功代码
+codeErrorTitle=错误代码\: {0}
+displayUnsupported=不支持请求的显示类型
+browserRequired=需要浏览器来登录
+browserContinue=需要浏览器来完成登录
+browserContinuePrompt=打开浏览器以继续? [y/n]:
+browserContinueAnswer=y
+
+# Transports
+usb=USB
+nfc=NFC
+bluetooth=蓝牙
+internal=内部
+unknown=未知
+
+termsTitle=条款
+termsText=<p>需要确定的条款</p>
+termsPlainText=需要确定的条款。
+termsAcceptanceRequired=您必须同意我们的的服务条款。
+acceptTerms=我同意服务条款
+
+recaptchaFailed=无效的验证码
+recaptchaNotConfigured=需要验证码,但是没有配置
+consentDenied=许可被拒绝。
+
+noAccount=新用户?
+username=用户名
+usernameOrEmail=用户名 或 电子邮箱地址
+firstName=名
+givenName=姓
+fullName=全名
+lastName=姓
+familyName=姓
+email=Email
+password=密码
+passwordConfirm=确认密码
+passwordNew=新密码
+passwordNewConfirm=确认新密码
+hidePassword=隐藏密码
+showPassword=显示密码
+rememberMe=记住我
+authenticatorCode=一次性验证码
+address=地址
+street=街道
+locality=市
+region=省,自治区,直辖市
+postal_code=邮政编码
+country=国家
+emailVerified=已验证电子邮件
+website=网址
+phoneNumber=电话号码
+phoneNumberVerified=已验证电话号码
+gender=性别
+birthday=生日
+zoneinfo=时区
+gssDelegationCredential=GSS Delegation Credential
+logoutOtherSessions=从其他设备中登出
+
+profileScopeConsentText=用户资料
+emailScopeConsentText=电子邮箱地址
+addressScopeConsentText=地址
+phoneScopeConsentText=电话号码
+offlineAccessScopeConsentText=离线访问
+samlRoleListScopeConsentText=我的角色
+rolesScopeConsentText=用户角色
+
+restartLoginTooltip=重新开始登录
+
+loginTotpIntro=您需要设置一个一次性密码生成器来访问您的账户
+loginTotpStep1=在您的移动设备中安装以下任意一个应用:
+loginTotpStep2=打开该应用来扫描条码
+loginTotpStep3=输入该应用提供的一次性代码并点击提交来完成配置。
+loginTotpStep3DeviceName=请提供一个设备名称以方便管理您的OTP设备
+loginTotpManualStep2=打开应用并输入密钥:
+loginTotpManualStep3=如果应用程序允许设置,请使用以下配置值:
+loginTotpUnableToScan=无法扫描?
+loginTotpScanBarcode=扫描条码?
+loginCredential=凭证
+loginOtpOneTime=一次性代码
+loginTotpType=类型
+loginTotpAlgorithm=算法
+loginTotpDigits=位数
+loginTotpInterval=间隔
+loginTotpCounter=计数
+loginTotpDeviceName=设备名称
+
+loginTotp.totp=基于时间
+loginTotp.hotp=给予计数器
+
+totpAppFreeOTPName=FreeOTP
+totpAppGoogleName=Google Authenticator
+totpAppMicrosoftAuthenticatorName=Microsoft Authenticator
+
+loginChooseAuthenticator=选择登录方式
+
+oauthGrantRequest=您是否授予这些访问权限?
+inResource=in
+
+oauth2DeviceVerificationTitle=设备登录
+verifyOAuth2DeviceUserCode=输入设备提供的代码,然后单击提交
+oauth2DeviceInvalidUserCodeMessage=错误代码,请重试。
+oauth2DeviceExpiredUserCodeMessage=代码已过期。请返回您的设备并尝试重新连接。
+oauth2DeviceVerificationCompleteHeader=设备登录成功
+oauth2DeviceVerificationCompleteMessage=您可以关闭此浏览器窗口并返回您的设备。
+oauth2DeviceVerificationFailedHeader=设备登录失败。
+oauth2DeviceVerificationFailedMessage=您可以关闭此浏览器窗口,然后返回到您的设备并尝试重新连接。
+oauth2DeviceConsentDeniedMessage=连接设备的同意被拒绝。
+oauth2DeviceAuthorizationGrantDisabledMessage=不允许此客户端启动 OAuth 2.0 设备授权授予。该流程已对此客户端禁用。
+
+emailVerifyInstruction1=一封包含验证邮箱具体步骤的邮件已经发送到您的邮箱。
+emailVerifyInstruction2=邮箱没有收到验证码?
+emailVerifyInstruction3=重新发送电子邮件
+
+emailLinkIdpTitle=链接 {0}
+emailLinkIdp1=一封包含链接账户 {0} 和账户 {1} 到账户 {2} 的邮件已经发送到您的邮箱。
+emailLinkIdp2=邮箱没有收到验证码邮件?
+emailLinkIdp3=重新发送电子邮件
+emailLinkIdp4=如果您已经在不同的浏览器中验证了电子邮件
+emailLinkIdp5=来继续.
+
+backToLogin=&laquo; 回到登录
+
+emailInstruction=输入您的用户名或邮箱,我们会发送一封带有设置新密码步骤的邮件到您的邮箱。
+emailInstructionUsername=输入您的用户名,我们将向您发送如何创建新密码的说明。
+
+copyCodeInstruction=请复制这段验证码并粘贴到您的应用:
+
+pageExpiredTitle=页面已过期
+pageExpiredMsg1=重启登录流程
+pageExpiredMsg2=继续登录流程
+
+personalInfo=个人信息\:
+role_admin=管理员
+role_realm-admin=域管理员
+role_create-realm=创建域
+role_create-client=创建客户端
+role_view-realm=查看域
+role_view-users=查看用户
+role_view-applications=查看应用
+role_view-clients=查看客户端
+role_view-events=查看时间
+role_view-identity-providers=查看身份提供者
+role_manage-realm=管理域
+role_manage-users=管理用户
+role_manage-applications=管理应用
+role_manage-identity-providers=管理身份提供者
+role_manage-clients=管理客户
+role_manage-events=管理事件
+role_view-profile=查看用户信息
+role_manage-account=管理账户
+role_manage-account-links=管理账户链接
+role_read-token=读取令牌
+role_offline-access=离线访问
+client_account=账户
+client_account-console=账户控制台
+client_security-admin-console=安全管理控制台
+client_admin-cli=管理命令行工具
+client_realm-management=域管理
+client_broker=经纪人
+
+requiredFields=必填字段
+
+invalidUserMessage=无效的用户名或密码。
+invalidUsernameMessage=无效的用户名。
+invalidUsernameOrEmailMessage=无效的用户名或电子邮箱。
+invalidPasswordMessage=无效的密码.
+invalidEmailMessage=无效的电子邮件地址
+accountDisabledMessage=账户已被禁用,请联系您的管理员。
+accountTemporarilyDisabledMessage=账户被临时禁用,请联系管理员或稍后再试。
+expiredCodeMessage=登录超时,请重新登录。
+expiredActionMessage=操作已过期。请登录后继续。
+expiredActionTokenNoSessionMessage=操作已过期。
+expiredActionTokenSessionExistsMessage=操作已过期。请重新开始。
+sessionLimitExceeded=已有过多会话。
+
+missingFirstNameMessage=请输入名。
+missingLastNameMessage=请输入姓。
+missingEmailMessage=请输入电子邮箱.
+missingUsernameMessage=请输入用户名。
+missingPasswordMessage=请输入密码。
+missingTotpMessage=请输入验证码
+missingTotpDeviceNameMessage=请指定设备名称。
+notMatchPasswordMessage=密码不匹配。
+
+error-invalid-value=无效值。
+error-invalid-blank=请输入值。
+error-empty=请输入值。
+error-invalid-length=长度必须在 {1} 和 {2} 之间。
+error-invalid-length-too-short=最小长度为 {1}。
+error-invalid-length-too-long= 最大长度为 {2}。
+error-invalid-email=无效电子邮件地址。
+error-invalid-number=无效号码。
+error-number-out-of-range=号码必须介于 {1} 和 {2} 之间。
+error-number-out-of-range-too-small= 数字的最小值必须是 {1}。
+error-number-out-of-range-too-big= 数值的最大值必须为 {2}。
+error-pattern-no-match=无效值。
+error-invalid-uri=无效 URL。
+error-invalid-uri-scheme=无效 URL 方案。
+error-invalid-uri-fragment=无效 URL 片段。
+error-user-attribute-required=请指定此字段。
+error-invalid-date=无效日期。
+error-user-attribute-read-only=此字段只读。
+error-username-invalid-character=值包含无效字符。
+error-person-name-invalid-character=值包含无效字符。
+error-reset-otp-missing-id=请选择 OTP 配置。
+
+invalidPasswordExistingMessage=无效的旧密码
+invalidPasswordBlacklistedMessage=无效密码:该密码已经被拉黑。
+invalidPasswordConfirmMessage=确认密码不相同
+invalidTotpMessage=无效的验证码
+
+usernameExistsMessage=用户名已被占用
+emailExistsMessage=电子邮件已存在。
+
+federatedIdentityExistsMessage=用户 {0} {1} 已存在. 请登录账户管理界面链接账户.
+federatedIdentityUnavailableMessage=使用身份提供者 {1} 进行身份验证的用户 {0} 不存在。请联系管理员。
+federatedIdentityUnmatchedEssentialClaimMessage=身份提供者签发的 ID 令牌与配置的基本要求不匹配。请联系管理员。
+
+confirmLinkIdpTitle=账户已存在
+federatedIdentityConfirmLinkMessage=用户{0} {1} 已存在. 怎么继续?
+federatedIdentityConfirmReauthenticateMessage=以 {0} 登录来将 {1} 连接到您的账户
+nestedFirstBrokerFlowMessage={0} 用户 {1} 与任何已知用户都没有关联。
+confirmLinkIdpReviewProfile=审查您的信息
+confirmLinkIdpContinue=添加到已知账户
+
+configureTotpMessage=您需要设置移动验证码来激活您的账户。
+configureBackupCodesMessage=您需要设置备份代码来激活您的账户。
+updateProfileMessage=您需要更新您的用户资料来激活您的账户。
+updatePasswordMessage=您需要更新您的密码来激活您的账户。
+updateEmailMessage=您需要更新您的电子邮箱地址来激活您的账户。
+resetPasswordMessage=您需要修改您的密码。
+verifyEmailMessage=您需要验证您的电子邮箱来激活您的账户
+linkIdpMessage=您需要验证您的电子邮箱来连接到账户{0}.
+
+emailSentMessage=您很快会收到一封关于接下来操作的邮件。
+emailSendErrorMessage=无法发送邮件,请稍后再试
+
+accountUpdatedMessage=您的账户已经更新。
+accountPasswordUpdatedMessage=您的密码已经被更新。
+
+delegationCompleteHeader=登录成功
+delegationCompleteMessage=您可以关闭浏览器窗口,返回控制台应用程序。
+delegationFailedHeader=登录失败
+delegationFailedMessage=您可以关闭此浏览器窗口,返回控制台应用程序并尝试重新登录。
+
+noAccessMessage=无权限
+
+invalidPasswordMinLengthMessage=无效的密码:最短长度 {0}.
+invalidPasswordMaxLengthMessage=无效的密码:最大长度 {0}.
+invalidPasswordMinDigitsMessage=无效的密码: 至少包含{0} 个数字
+invalidPasswordMinLowerCaseCharsMessage=无效的密码:至少包含 {0} 小写字母.
+invalidPasswordMinUpperCaseCharsMessage=无效的密码:至少包含 {0} 大写字母.
+invalidPasswordMinSpecialCharsMessage=无效的密码:至少包含 {0} 特殊字符.
+invalidPasswordNotUsernameMessage=无效的密码: 不能与用户名相同.
+invalidPasswordNotEmailMessage=无效的密码:不能与电子邮箱地址相同。
+invalidPasswordRegexPatternMessage=无效的密码: 无法与正则表达式匹配.
+invalidPasswordHistoryMessage=无效的密码: 不能与前 {0} 个旧密码相同.
+invalidPasswordGenericMessage=无效的密码:新密码不符合密码规则。
+
+failedToProcessResponseMessage=无法处理回复
+httpsRequiredMessage=需要HTTPS
+realmNotEnabledMessage=域未启用
+invalidRequestMessage=非法的请求
+successLogout=您已被登出
+failedLogout=无法登出
+unknownLoginRequesterMessage=未知的登录请求发起方
+loginRequesterNotEnabledMessage=登录请求发起方未启用
+bearerOnlyMessage=Bearer-only 的应用不允许通过浏览器登录
+standardFlowDisabledMessage=客户端不允许发起指定返回类型的浏览器登录. 此客户端已禁用标准流程。
+implicitFlowDisabledMessage=客户端不允许发起指定返回类型的浏览器登录. 此客户端已禁用隐式流程。
+invalidRedirectUriMessage=无效的跳转链接
+unsupportedNameIdFormatMessage=不支持的 NameIDFormat
+invalidRequesterMessage=无效的发起者
+registrationNotAllowedMessage=不允许注册
+resetCredentialNotAllowedMessage=不允许重置凭证
+
+permissionNotApprovedMessage=许可没有批准
+noRelayStateInResponseMessage=身份提供者没有返回中继状态信息
+insufficientPermissionMessage=权限不足以链接新的身份
+couldNotProceedWithAuthenticationRequestMessage=无法与身份提供者处理认证请求
+couldNotObtainTokenMessage=未从身份提供者获得令牌
+unexpectedErrorRetrievingTokenMessage=从身份提供者获得令牌时遇到未知错误
+unexpectedErrorHandlingResponseMessage=从身份提供者获得回复时遇到未知错误
+identityProviderAuthenticationFailedMessage=认证失败,无法通过身份提供者认证
+couldNotSendAuthenticationRequestMessage=无法向身份提供方发送认证请求
+unexpectedErrorHandlingRequestMessage=在处理发向认证提供方的请求时,出现未知错误。
+invalidAccessCodeMessage=无效的访问代码
+sessionNotActiveMessage=会话不在活动状态
+invalidCodeMessage=发生错误,请通过应用程序重新登录。
+cookieNotFoundMessage=未找到 cookie。请确保浏览器已启用 cookie。
+insufficientLevelOfAuthentication=未满足所请求的身份验证级别。
+identityProviderUnexpectedErrorMessage=与身份提供程序进行身份验证时出现意外错误
+identityProviderMissingStateMessage=身份提供程序的响应中缺少状态参数。
+identityProviderMissingCodeOrErrorMessage=身份提供程序的响应中缺少代码或错误参数。
+identityProviderInvalidResponseMessage=身份提供程序的无效响应。
+identityProviderInvalidSignatureMessage=身份提供程序响应中的无效签名。
+identityProviderNotFoundMessage=找不到具有标识符的身份提供程序。
+identityProviderLinkSuccess=您已成功验证电子邮件。请回到原来的浏览器继续登录。
+staleCodeMessage=此页面已失效,请返回应用程序并重新登录
+realmSupportsNoCredentialsMessage=域不支持任何凭证类型。
+credentialSetupRequired=无法登录,需要设置凭证。
+identityProviderNotUniqueMessage=该域支持多个身份提供程序。无法确定应使用哪个身份提供程序进行身份验证。
+emailVerifiedMessage=您的电子邮件地址已通过验证。
+emailVerifiedAlreadyMessage=您的电子邮件地址已被验证通过。
+staleEmailVerificationLink=您点击的链接是旧的过期链接,已经不再有效。 也许您已经验证了您的电子邮件。
+identityProviderAlreadyLinkedMessage={0} 返回的联合身份已链接到另一个用户。
+confirmAccountLinking=确认将身份提供者 {1} 的账户 {0} 与您的账户链接。
+confirmEmailAddressVerification=确认电子邮件地址 {0} 的有效性。
+confirmExecutionOfActions=执行以下操作
+
+locale_ar=عربي
+locale_ca=Català
+locale_cs=Čeština
+locale_da=Dansk
+locale_de=Deutsch
+locale_en=English
+locale_es=Español
+locale_fi=Suomi
+locale_fr=Français
+locale_hu=Magyar
+locale_it=Italiano
+locale_ja=日本語
+locale_lt=Lietuvių
+locale_lv=Latviešu
+locale_nl=Nederlands
+locale_no=Norsk
+locale_pl=Polski
+locale_pt_BR=Português (Brasil)
+locale_ru=Русский
+locale_sk=Slovenčina
+locale_sv=Svenska
+locale_th=ไทย
+locale_tr=Türkçe
+locale_zh-CN=中文简体
+
+backToApplication=&laquo; 回到应用
+missingParameterMessage=缺少参数 \: {0}
+clientNotFoundMessage=客户端未找到
+clientDisabledMessage=客户端已禁用
+invalidParameterMessage=无效的参数 \: {0}
+alreadyLoggedIn=您已经登录。
+differentUserAuthenticated=您已经以不同用户 ''{0}'' 的身份在此会话中进行了身份验证。请先注销。
+brokerLinkingSessionExpired=已请求与经纪人帐户链接,但当前会话不再有效。
+proceedWithAction=&raquo; 点击此处继续
+acrNotFulfilled=未满足身份验证要求
+
+requiredAction.CONFIGURE_TOTP=配置OTP
+requiredAction.TERMS_AND_CONDITIONS=条款和条件
+requiredAction.UPDATE_PASSWORD=更新密码
+requiredAction.UPDATE_PROFILE=更新个人资料
+requiredAction.VERIFY_EMAIL=验证电子邮箱
+requiredAction.CONFIGURE_RECOVERY_AUTHN_CODES=生成恢复代码
+requiredAction.webauthn-register-passwordless=Webauthn注册免密码
+
+invalidTokenRequiredActions=链接中包含的必需操作无效
+
+doX509Login=您将被登录为\:
+clientCertificate=X509客户端证书\:
+noCertificate=[No Certificate]
+
+
+pageNotFound=页面未找到
+internalServerError=发生内部服务器错误
+
+console-username=用户名:
+console-password=密码:
+console-otp=一次性密码:
+console-new-password=新密码:
+console-confirm-password=确认密码:
+console-update-password=需要更新您的密码。
+console-verify-email=您需要验证您的电子邮件地址。我们已向 {0} 发送了一封包含验证码的电子邮件。请将此代码输入下面的输入框中。
+console-email-code=电子邮件验证码:
+console-accept-terms=接受条款?[y/n]:
+console-accept=y
+
+# Openshift messages
+openshift.scope.user_info=用户信息
+openshift.scope.user_check-access=用户访问信息
+openshift.scope.user_full=完全访问
+openshift.scope.list-projects=列出项目
+
+# SAML authentication
+saml.post-form.title=身份验证重定向
+saml.post-form.message=重定向中,请稍候。
+saml.post-form.js-disabled=JavaScript已被禁用。我们强烈建议启用它。点击下面的按钮继续。
+saml.artifactResolutionServiceInvalidResponse=无法解析构造。
+
+# Authenticators
+otp-display-name=验证器应用程序
+otp-help-text=从验证器应用输入验证码。
+otp-reset-description=应删除哪个OTP配置?
+password-display-name=密码
+password-help-text=通过输入密码登录。
+auth-username-form-display-name=用户名
+auth-username-form-help-text=输入用户名以开始登录
+auth-username-password-form-display-name=用户名和密码
+auth-username-password-form-help-text=输入用户名和密码以登录。
+
+# Recovery Codes
+auth-recovery-authn-code-form-display-name=恢复代码
+auth-recovery-authn-code-form-help-text=输入先前生成的恢复代码。
+auth-recovery-code-info-message=输入指定的恢复代码。
+auth-recovery-code-prompt=恢复代码 #{0}
+auth-recovery-code-header=使用恢复代码登录
+recovery-codes-error-invalid=无效的代码
+recovery-code-config-header=恢复代码
+recovery-code-config-warning-title=离开此页面后,这些恢复代码将不再显示
+recovery-code-config-warning-message=确保打印、下载或将它们复制到密码管理器,并将其保存在安全的地方。取消此设置将从您的帐户中删除这些恢复代码。
+recovery-codes-print=打印
+recovery-codes-download=下载
+recovery-codes-copy=复制
+recovery-codes-copied=已复制
+recovery-codes-confirmation-message=我已将这些代码保存在安全的地方
+recovery-codes-action-complete=完成设置
+recovery-codes-action-cancel=取消设置
+recovery-codes-download-file-header=将这些恢复代码保存在安全的地方。
+recovery-codes-download-file-description=恢复代码是一次性验证码,如果您无法访问您的验证器,可以使用它们登录到您的帐户。
+recovery-codes-download-file-date=这些代码生成于
+recovery-codes-label-default=恢复代码
+
+# WebAuthn
+webauthn-display-name=安全密钥
+webauthn-help-text=使用您的安全密钥登录。
+webauthn-passwordless-display-name=安全密钥
+webauthn-passwordless-help-text=使用您的安全密钥进行无密码登录。
+webauthn-login-title=安全密钥登录
+webauthn-registration-title=安全密钥注册
+webauthn-available-authenticators=可用的安全密钥
+webauthn-unsupported-browser-text=此浏览器不支持 WebAuthn。请尝试其他浏览器或联系管理员。
+webauthn-doAuthenticate=使用安全密钥登录
+webauthn-createdAt-label=创建于
+
+# WebAuthn Error
+webauthn-error-title=安全密钥错误
+webauthn-error-registration=注册您的安全密钥失败。<br/> {0}
+webauthn-error-api-get=通过安全密钥进行身份验证失败。<br/> {0}
+webauthn-error-different-user=首次经过身份验证的用户不是通过安全密钥经过身份验证的用户。
+webauthn-error-auth-verification=安全密钥身份验证结果无效。<br/> {0}
+webauthn-error-register-verification=安全密钥注册结果无效。<br/> {0}
+webauthn-error-user-not-found=通过安全密钥进行身份验证的用户未知。
+
+# Identity provider
+identity-provider-redirector=连接到另一个身份提供者
+identity-provider-login-label=或使用以下方式登录
+idp-email-verification-display-name=电子邮件验证
+idp-email-verification-help-text=通过验证您的电子邮件来链接您的帐户。
+idp-username-password-form-display-name=用户名和密码
+idp-username-password-form-help-text=通过登录来链接您的帐户。
+
+finalDeletionConfirmation=如果将您的帐户删除,将无法恢复。如果要保留您的帐户,请点击取消。
+irreversibleAction=此操作不可逆转
+deleteAccountConfirm=删除帐户确认
+
+deletingImplies=删除您的帐户意味着:
+errasingData=删除您的所有数据
+loggingOutImmediately=立即将您注销
+accountUnusable=此帐户将无法再次使用应用程序
+userDeletedSuccessfully=用户删除成功
+
+access-denied=访问被拒绝
+access-denied-when-idp-auth=使用 {0} 进行身份验证时被拒绝访问
+
+frontchannel-logout.title=正在注销
+frontchannel-logout.message=您正在从以下应用程序注销
+logoutConfirmTitle=注销
+logoutConfirmHeader=您确定要注销吗?
+doLogout=注销
+
+readOnlyUsernameMessage=由于用户名是只读的,您无法更新用户名。
diff --git a/themes/custom-theme-template/login/password-commons.ftl b/themes/custom-theme-template/login/password-commons.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..233c781d75a865c33b2980a8b47ee4155c9a39bb
--- /dev/null
+++ b/themes/custom-theme-template/login/password-commons.ftl
@@ -0,0 +1,12 @@
+<#macro logoutOtherSessions>
+    <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+        <div class="${properties.kcFormOptionsWrapperClass!}">
+            <div class="checkbox">
+                <label>
+                    <input type="checkbox" id="logout-sessions" name="logout-sessions" value="on" checked>
+                    ${msg("logoutOtherSessions")}
+                </label>
+            </div>
+        </div>
+    </div>
+</#macro>
diff --git a/themes/custom-theme-template/login/register-commons.ftl b/themes/custom-theme-template/login/register-commons.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..7007797ee0e922817a62a87872d6e312a38ea051
--- /dev/null
+++ b/themes/custom-theme-template/login/register-commons.ftl
@@ -0,0 +1,27 @@
+<#macro termsAcceptance>
+    <#if termsAcceptanceRequired??>
+        <div class="form-group">
+            <div class="${properties.kcInputWrapperClass!}">
+                ${msg("termsTitle")}
+                <div id="kc-registration-terms-text">
+                    ${kcSanitize(msg("termsText"))?no_esc}
+                </div>
+            </div>
+        </div>
+        <div class="form-group">
+            <div class="${properties.kcLabelWrapperClass!}">
+                <input type="checkbox" id="termsAccepted" name="termsAccepted" class="${properties.kcCheckboxInputClass!}"
+                       aria-invalid="<#if messagesPerField.existsError('termsAccepted')>true</#if>"
+                />
+                <label for="termsAccepted" class="${properties.kcLabelClass!}">${msg("acceptTerms")}</label>
+            </div>
+            <#if messagesPerField.existsError('termsAccepted')>
+                <div class="${properties.kcLabelWrapperClass!}">
+                            <span id="input-error-terms-accepted" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+                                ${kcSanitize(messagesPerField.get('termsAccepted'))?no_esc}
+                            </span>
+                </div>
+            </#if>
+        </div>
+    </#if>
+</#macro>
diff --git a/themes/custom-theme-template/login/register.ftl b/themes/custom-theme-template/login/register.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..d95274a1491856fb980928862778385192bf82a9
--- /dev/null
+++ b/themes/custom-theme-template/login/register.ftl
@@ -0,0 +1,94 @@
+<#import "template.ftl" as layout>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<#import "register-commons.ftl" as registerCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+    <#if section = "header">
+        ${msg("registerTitle")}
+    <#elseif section = "form">
+        <form id="kc-register-form" class="${properties.kcFormClass!}" action="${url.registrationAction}" method="post">
+
+            <@userProfileCommons.userProfileFormFields; callback, attribute>
+                <#if callback = "afterField">
+                <#-- render password fields just under the username or email (if used as username) -->
+                    <#if passwordRequired?? && (attribute.name == 'username' || (attribute.name == 'email' && realm.registrationEmailAsUsername))>
+                        <div class="${properties.kcFormGroupClass!}">
+                            <div class="${properties.kcLabelWrapperClass!}">
+                                <label for="password" class="${properties.kcLabelClass!}">${msg("password")}</label> *
+                            </div>
+                            <div class="${properties.kcInputWrapperClass!}">
+                                <div class="${properties.kcInputGroup!}">
+                                    <input type="password" id="password" class="${properties.kcInputClass!}" name="password"
+                                           autocomplete="new-password"
+                                           aria-invalid="<#if messagesPerField.existsError('password','password-confirm')>true</#if>"
+                                    />
+                                    <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg('showPassword')}"
+                                            aria-controls="password"  data-password-toggle
+                                            data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                            data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                                        <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                                    </button>
+                                </div>
+
+                                <#if messagesPerField.existsError('password')>
+                                    <span id="input-error-password" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+		                                ${kcSanitize(messagesPerField.get('password'))?no_esc}
+		                            </span>
+                                </#if>
+                            </div>
+                        </div>
+
+                        <div class="${properties.kcFormGroupClass!}">
+                            <div class="${properties.kcLabelWrapperClass!}">
+                                <label for="password-confirm"
+                                       class="${properties.kcLabelClass!}">${msg("passwordConfirm")}</label> *
+                            </div>
+                            <div class="${properties.kcInputWrapperClass!}">
+                                <div class="${properties.kcInputGroup!}">
+                                    <input type="password" id="password-confirm" class="${properties.kcInputClass!}"
+                                           name="password-confirm"
+                                           aria-invalid="<#if messagesPerField.existsError('password-confirm')>true</#if>"
+                                    />
+                                    <button class="${properties.kcFormPasswordVisibilityButtonClass!}" type="button" aria-label="${msg('showPassword')}"
+                                            aria-controls="password-confirm"  data-password-toggle
+                                            data-icon-show="${properties.kcFormPasswordVisibilityIconShow!}" data-icon-hide="${properties.kcFormPasswordVisibilityIconHide!}"
+                                            data-label-show="${msg('showPassword')}" data-label-hide="${msg('hidePassword')}">
+                                        <i class="${properties.kcFormPasswordVisibilityIconShow!}" aria-hidden="true"></i>
+                                    </button>
+                                </div>
+
+                                <#if messagesPerField.existsError('password-confirm')>
+                                    <span id="input-error-password-confirm" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+		                                ${kcSanitize(messagesPerField.get('password-confirm'))?no_esc}
+		                            </span>
+                                </#if>
+                            </div>
+                        </div>
+                    </#if>
+                </#if>
+            </@userProfileCommons.userProfileFormFields>
+
+            <@registerCommons.termsAcceptance/>
+
+            <#if recaptchaRequired??>
+                <div class="form-group">
+                    <div class="${properties.kcInputWrapperClass!}">
+                        <div class="g-recaptcha" data-size="compact" data-sitekey="${recaptchaSiteKey}"></div>
+                    </div>
+                </div>
+            </#if>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                        <span><a href="${url.loginUrl}">${kcSanitize(msg("backToLogin"))?no_esc}</a></span>
+                    </div>
+                </div>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doRegister")}"/>
+                </div>
+            </div>
+        </form>
+        <script type="module" src="${url.resourcesPath}/js/passwordVisibility.js"></script>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/resources/js/authChecker.js b/themes/custom-theme-template/login/resources/js/authChecker.js
new file mode 100644
index 0000000000000000000000000000000000000000..18fd8f9520d9ace019f71ceb96bc180e1de442f4
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/authChecker.js
@@ -0,0 +1,74 @@
+const CHECK_INTERVAL_MILLISECS = 2000;
+const initialSession = getSession();
+
+export function checkCookiesAndSetTimer(authSessionId, tabId, loginRestartUrl) {
+  if (initialSession) {
+    // We started with a session, so there is nothing to do, exit.
+    return;
+  }
+
+  const session = getSession();
+
+  if (!session) {
+    // The session is not present, check again later.
+    setTimeout(
+      () => checkCookiesAndSetTimer(authSessionId, tabId, loginRestartUrl),
+      CHECK_INTERVAL_MILLISECS
+    );
+  } else {
+    // The session is present, check the auth state.
+    checkAuthState(authSessionId, tabId, loginRestartUrl);
+  }
+}
+
+function checkAuthState(authSessionId, tabId, loginRestartUrl) {
+  const authStateRaw = getAuthState();
+
+  if (!authStateRaw) {
+    // The auth state is not present, exit.
+    return;
+  }
+
+  // Attempt to parse the auth state as JSON.
+  let authState;
+  try {
+    authState = JSON.parse(decodeURIComponent(authStateRaw));
+  } catch (error) {
+    // The auth state is not valid JSON, exit.
+    return;
+  }
+
+  if (authState.authSessionId !== authSessionId) {
+    // The session ID does not match, exit.
+    return;
+  }
+
+  if (
+    !Array.isArray(authState.remainingTabs) ||
+    !authState.remainingTabs.includes(tabId)
+  ) {
+    // The remaining tabs don't include the provided tab ID, exit.
+    return;
+  }
+
+  // We made it this far, redirect to the login restart URL.
+  location.href = loginRestartUrl;
+}
+
+function getSession() {
+  return getCookieByName("KEYCLOAK_SESSION");
+}
+
+function getAuthState() {
+  return getCookieByName("KC_AUTH_STATE");
+}
+
+function getCookieByName(name) {
+  for (const cookie of document.cookie.split(";")) {
+    const [key, value] = cookie.split("=").map((value) => value.trim());
+    if (key === name) {
+      return value.startsWith('"') && value.endsWith('"') ? value.slice(1, -1) : value;
+    }
+  }
+  return null;
+}
diff --git a/themes/custom-theme-template/login/resources/js/base64url.js b/themes/custom-theme-template/login/resources/js/base64url.js
new file mode 100644
index 0000000000000000000000000000000000000000..64555bfbd5a74f83192259597775f6ddb5a72b96
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/base64url.js
@@ -0,0 +1,114 @@
+// for embedded scripts, quoted and modified from https://github.com/swansontec/rfc4648.js by William Swanson
+'use strict';
+var base64url = base64url || {};
+(function(base64url) {
+
+    function parse (string, encoding, opts = {}) {
+        // Build the character lookup table:
+        if (!encoding.codes) {
+              encoding.codes = {};
+              for (let i = 0; i < encoding.chars.length; ++i) {
+                  encoding.codes[encoding.chars[i]] = i;
+              }
+        }
+
+        // The string must have a whole number of bytes:
+        if (!opts.loose && (string.length * encoding.bits) & 7) {
+            throw new SyntaxError('Invalid padding');
+        }
+
+        // Count the padding bytes:
+        let end = string.length;
+        while (string[end - 1] === '=') {
+            --end;
+
+            // If we get a whole number of bytes, there is too much padding:
+            if (!opts.loose && !(((string.length - end) * encoding.bits) & 7)) {
+                throw new SyntaxError('Invalid padding');
+            }
+        }
+
+        // Allocate the output:
+        const out = new (opts.out || Uint8Array)(((end * encoding.bits) / 8) | 0);
+
+        // Parse the data:
+        let bits = 0; // Number of bits currently in the buffer
+        let buffer = 0; // Bits waiting to be written out, MSB first
+        let written = 0; // Next byte to write
+        for (let i = 0; i < end; ++i) {
+            // Read one character from the string:
+            const value = encoding.codes[string[i]];
+            if (value === void 0) {
+                throw new SyntaxError('Invalid character ' + string[i]);
+            }
+
+            // Append the bits to the buffer:
+            buffer = (buffer << encoding.bits) | value;
+            bits += encoding.bits;
+
+            // Write out some bits if the buffer has a byte's worth:
+            if (bits >= 8) {
+                bits -= 8;
+                out[written++] = 0xff & (buffer >> bits);
+            }
+        }
+
+        // Verify that we have received just enough bits:
+        if (bits >= encoding.bits || 0xff & (buffer << (8 - bits))) {
+            throw new SyntaxError('Unexpected end of data');
+        }
+
+        return out
+    }
+
+    function stringify (data, encoding, opts = {}) {
+        const { pad = true } = opts;
+        const mask = (1 << encoding.bits) - 1;
+        let out = '';
+
+        let bits = 0; // Number of bits currently in the buffer
+        let buffer = 0; // Bits waiting to be written out, MSB first
+        for (let i = 0; i < data.length; ++i) {
+            // Slurp data into the buffer:
+            buffer = (buffer << 8) | (0xff & data[i]);
+            bits += 8;
+
+            // Write out as much as we can:
+            while (bits > encoding.bits) {
+                bits -= encoding.bits;
+                out += encoding.chars[mask & (buffer >> bits)];
+            }
+        }
+
+        // Partial character:
+        if (bits) {
+            out += encoding.chars[mask & (buffer << (encoding.bits - bits))];
+        }
+
+        // Add padding characters until we hit a byte boundary:
+        if (pad) {
+            while ((out.length * encoding.bits) & 7) {
+                out += '=';
+            }
+        }
+
+        return out
+    }
+
+    const encoding = {
+        chars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
+        bits: 6
+    }
+
+    base64url.decode = function (string, opts) {
+        return parse(string, encoding, opts);
+    }
+
+    base64url.encode = function (data, opts) {
+        return stringify(data, encoding, opts)
+    }
+
+    return base64url;
+}(base64url));
+
+
diff --git a/themes/custom-theme-template/login/resources/js/common.js b/themes/custom-theme-template/login/resources/js/common.js
new file mode 100644
index 0000000000000000000000000000000000000000..ebf55b1589ecbc1435646a33e8a5b85137c001da
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/common.js
@@ -0,0 +1,48 @@
+export const formatNumber = (input, format) => {
+    if (!input) {
+        return "";
+    }
+
+    // array holding the patterns for the number of expected digits in each part
+    const digitPattern = format.match(/{\d+}/g);
+
+    if (!digitPattern) {
+        return "";
+    }
+
+    // calculate the maximum size of the given pattern based on the sum of the expected digits
+    const maxSize = digitPattern.reduce((total, p) => total + parseInt(p.replace("{", "").replace("}", "")), 0)
+
+    // keep only digits
+    let rawValue = input.replace(/\D+/g, '');
+
+    // make sure the value is a number
+    if (parseInt(rawValue) != rawValue) {
+        return "";
+    }
+
+    // make sure the number of digits does not exceed the maximum size
+    if (rawValue.length > maxSize) {
+        rawValue = rawValue.substring(0, maxSize);
+    }
+
+    // build the regex based based on the expected digits in each part
+    const formatter = digitPattern.reduce((result, p) => result + `(\\d${p})`, "^");
+
+    // if the current digits match the pattern we have each group of digits in an array
+    let digits = new RegExp(formatter).exec(rawValue);
+
+    // no match, return the raw value without any format
+    if (!digits) {
+        return input;
+    }
+
+    let result = format;
+
+    // finally format the current digits accordingly to the given format
+    for (let i = 0; i < digitPattern.length; i++) {
+        result = result.replace(digitPattern[i], digits[i + 1]);
+    }
+
+    return result;
+}
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/resources/js/kcMultivalued.js b/themes/custom-theme-template/login/resources/js/kcMultivalued.js
new file mode 100644
index 0000000000000000000000000000000000000000..5d2f0f3007580fd5f2477394771a90726fd0435b
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/kcMultivalued.js
@@ -0,0 +1,106 @@
+const DATA_KC_MULTIVALUED = 'data-kcMultivalued';
+const KC_ADD_ACTION_PREFIX = "kc-add-";
+const KC_REMOVE_ACTION_PREFIX = "kc-remove-";
+const KC_ACTION_CLASS = "pf-c-button pf-m-inline pf-m-link";
+
+function createAddAction(element) {
+    const action = createAction("Add value",
+        KC_ADD_ACTION_PREFIX,
+        element,
+        () => {
+            const name = element.getAttribute("name");
+            const elements = getInputElementsByName().get(name);
+            const length = elements.length;
+
+            if (length === 0) {
+                return;
+            }
+
+            const lastNode = elements[length - 1];
+            const newNode = lastNode.cloneNode(true);
+            newNode.setAttribute("id", name + "-" + elements.length);
+            newNode.value = "";
+            lastNode.after(newNode);
+
+            render();
+        });
+
+    element.after(action);
+}
+
+function createRemoveAction(element, isLastElement) {
+    let text = "Remove";
+
+    if (isLastElement) {
+        text = text + " | ";
+    }
+
+    const action = createAction(text, KC_REMOVE_ACTION_PREFIX, element, () => {
+        removeActions(element);
+        element.remove();
+        render();
+    });
+
+    element.insertAdjacentElement('afterend', action);
+}
+
+function getInputElementsByName() {
+    const selector = document.querySelectorAll(`[${DATA_KC_MULTIVALUED}]`);
+    const elementsByName = new Map();
+
+    for (let element of Array.from(selector.values())) {
+        let name = element.getAttribute("name");
+        let elements = elementsByName.get(name);
+
+        if (!elements) {
+            elements = [];
+            elementsByName.set(name, elements);
+        }
+
+        elements.push(element);
+    }
+
+    return elementsByName;
+}
+
+function removeActions(element) {
+    for (let actionPrefix of [KC_ADD_ACTION_PREFIX, KC_REMOVE_ACTION_PREFIX]) {
+        const action = document.getElementById(actionPrefix + element.getAttribute("id"));
+
+        if (action) {
+            action.remove();
+        }
+    }
+}
+
+function createAction(text, type, element, onClick) {
+    const action = document.createElement("button")
+    action.setAttribute("id", type + element.getAttribute("id"));
+    action.setAttribute("type", "button");
+    action.innerText = text;
+    action.setAttribute("class", KC_ACTION_CLASS);
+    action.addEventListener("click", onClick);
+    return action;
+}
+
+function render() {
+    getInputElementsByName().forEach((elements, name) => {
+        elements.forEach((element, index) => {
+            removeActions(element);
+
+            element.setAttribute("id", name + "-" + index);
+
+            const lastNode = element === elements[elements.length - 1];
+
+            if (lastNode) {
+                createAddAction(element);
+            }
+
+            if (elements.length > 1) {
+                createRemoveAction(element, lastNode);
+            }
+        });
+    });
+}
+
+render();
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/resources/js/kcNumberFormat.js b/themes/custom-theme-template/login/resources/js/kcNumberFormat.js
new file mode 100644
index 0000000000000000000000000000000000000000..219ebf1bb1b706996bd9c5b5894155fda35fbb47
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/kcNumberFormat.js
@@ -0,0 +1,21 @@
+// @ts-check
+import { formatNumber } from "./common.js";
+import { registerElementAnnotatedBy } from "./userProfile.js";
+
+const KC_NUMBER_FORMAT = "kcNumberFormat";
+
+registerElementAnnotatedBy({
+  name: KC_NUMBER_FORMAT,
+  onAdd(element) {
+    const formatValue = () => {
+      const format = element.getAttribute(`data-${KC_NUMBER_FORMAT}`);
+      element.value = formatNumber(element.value, format);
+    };
+
+    element.addEventListener("keyup", formatValue);
+
+    formatValue();
+
+    return () => element.removeEventListener("keyup", formatValue);
+  },
+});
diff --git a/themes/custom-theme-template/login/resources/js/kcNumberUnFormat.js b/themes/custom-theme-template/login/resources/js/kcNumberUnFormat.js
new file mode 100644
index 0000000000000000000000000000000000000000..d81b79237fd70267a45565fd5267ac027d4971e7
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/kcNumberUnFormat.js
@@ -0,0 +1,19 @@
+// @ts-check
+import { formatNumber } from "./common.js";
+import { registerElementAnnotatedBy } from "./userProfile.js";
+
+const KC_NUMBER_UNFORMAT = 'kcNumberUnFormat';
+
+registerElementAnnotatedBy({
+    name: KC_NUMBER_UNFORMAT,
+    onAdd(element) {
+        for (let form of document.forms) {
+            form.addEventListener('submit', (event) => {
+                const rawFormat = element.getAttribute(`data-${KC_NUMBER_UNFORMAT}`);
+                if (rawFormat) {
+                    element.value = formatNumber(element.value, rawFormat);
+                }
+            });
+        }
+    },
+});
diff --git a/themes/custom-theme-template/login/resources/js/menu-button-links.js b/themes/custom-theme-template/login/resources/js/menu-button-links.js
new file mode 100644
index 0000000000000000000000000000000000000000..0fd79f0f6862097632f0b910a28790133cf3581d
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/menu-button-links.js
@@ -0,0 +1,315 @@
+// @ts-check
+/*
+ *   This content is licensed according to the W3C Software License at
+ *   https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document
+ *
+ *   File:   menu-button-links.js
+ *
+ *   Desc:   Creates a menu button that opens a menu of links
+ *
+ *   Modified by Peter Keuter to adhere to the coding standards of Keycloak
+ *   Original file: https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/menu-button/examples/js/menu-button-links.js
+ *   Source: https://www.w3.org/TR/wai-aria-practices/examples/menu-button/menu-button-links.html
+ */
+
+class MenuButtonLinks {
+  constructor(domNode) {
+    this.domNode = domNode;
+    this.buttonNode = domNode.querySelector("button");
+    this.menuNode = domNode.querySelector('[role="menu"]');
+    this.menuitemNodes = [];
+    this.firstMenuitem = false;
+    this.lastMenuitem = false;
+    this.firstChars = [];
+
+    this.buttonNode.addEventListener("keydown", (e) => this.onButtonKeydown(e));
+    this.buttonNode.addEventListener("click", (e) => this.onButtonClick(e));
+
+    const nodes = domNode.querySelectorAll('[role="menuitem"]');
+
+    for (const menuitem of nodes) {
+      this.menuitemNodes.push(menuitem);
+      menuitem.tabIndex = -1;
+      this.firstChars.push(menuitem.textContent.trim()[0].toLowerCase());
+
+      menuitem.addEventListener("keydown", (e) => this.onMenuitemKeydown(e));
+
+      menuitem.addEventListener("mouseover", (e) =>
+        this.onMenuitemMouseover(e)
+      );
+
+      if (!this.firstMenuitem) {
+        this.firstMenuitem = menuitem;
+      }
+      this.lastMenuitem = menuitem;
+    }
+
+    domNode.addEventListener("focusin", () => this.onFocusin());
+    domNode.addEventListener("focusout", () => this.onFocusout());
+
+    window.addEventListener(
+      "mousedown",
+      (e) => this.onBackgroundMousedown(e),
+      true
+    );
+  }
+
+  setFocusToMenuitem = (newMenuitem) =>
+    this.menuitemNodes.forEach((item) => {
+      if (item === newMenuitem) {
+        item.tabIndex = 0;
+        newMenuitem.focus();
+      } else {
+        item.tabIndex = -1;
+      }
+    });
+
+  setFocusToFirstMenuitem = () => this.setFocusToMenuitem(this.firstMenuitem);
+
+  setFocusToLastMenuitem = () => this.setFocusToMenuitem(this.lastMenuitem);
+
+  setFocusToPreviousMenuitem = (currentMenuitem) => {
+    let newMenuitem, index;
+
+    if (currentMenuitem === this.firstMenuitem) {
+      newMenuitem = this.lastMenuitem;
+    } else {
+      index = this.menuitemNodes.indexOf(currentMenuitem);
+      newMenuitem = this.menuitemNodes[index - 1];
+    }
+
+    this.setFocusToMenuitem(newMenuitem);
+
+    return newMenuitem;
+  };
+
+  setFocusToNextMenuitem = (currentMenuitem) => {
+    let newMenuitem, index;
+
+    if (currentMenuitem === this.lastMenuitem) {
+      newMenuitem = this.firstMenuitem;
+    } else {
+      index = this.menuitemNodes.indexOf(currentMenuitem);
+      newMenuitem = this.menuitemNodes[index + 1];
+    }
+    this.setFocusToMenuitem(newMenuitem);
+
+    return newMenuitem;
+  };
+
+  setFocusByFirstCharacter = (currentMenuitem, char) => {
+    let start, index;
+
+    if (char.length > 1) {
+      return;
+    }
+
+    char = char.toLowerCase();
+
+    // Get start index for search based on position of currentItem
+    start = this.menuitemNodes.indexOf(currentMenuitem) + 1;
+    if (start >= this.menuitemNodes.length) {
+      start = 0;
+    }
+
+    // Check remaining slots in the menu
+    index = this.firstChars.indexOf(char, start);
+
+    // If not found in remaining slots, check from beginning
+    if (index === -1) {
+      index = this.firstChars.indexOf(char, 0);
+    }
+
+    // If match was found...
+    if (index > -1) {
+      this.setFocusToMenuitem(this.menuitemNodes[index]);
+    }
+  };
+
+  // Utilities
+
+  getIndexFirstChars = (startIndex, char) => {
+    for (let i = startIndex; i < this.firstChars.length; i++) {
+      if (char === this.firstChars[i]) {
+        return i;
+      }
+    }
+    return -1;
+  };
+
+  // Popup menu methods
+
+  openPopup = () => {
+    this.menuNode.style.display = "block";
+    this.buttonNode.setAttribute("aria-expanded", "true");
+  };
+
+  closePopup = () => {
+    if (this.isOpen()) {
+      this.buttonNode.setAttribute("aria-expanded", "false");
+      this.menuNode.style.removeProperty("display");
+    }
+  };
+
+  isOpen = () => {
+    return this.buttonNode.getAttribute("aria-expanded") === "true";
+  };
+
+  // Menu event handlers
+
+  onFocusin = () => {
+    this.domNode.classList.add("focus");
+  };
+
+  onFocusout = () => {
+    this.domNode.classList.remove("focus");
+  };
+
+  onButtonKeydown = (event) => {
+    const key = event.key;
+    let flag = false;
+
+    switch (key) {
+      case " ":
+      case "Enter":
+      case "ArrowDown":
+      case "Down":
+        this.openPopup();
+        this.setFocusToFirstMenuitem();
+        flag = true;
+        break;
+
+      case "Esc":
+      case "Escape":
+        this.closePopup();
+        this.buttonNode.focus();
+        flag = true;
+        break;
+
+      case "Up":
+      case "ArrowUp":
+        this.openPopup();
+        this.setFocusToLastMenuitem();
+        flag = true;
+        break;
+
+      default:
+        break;
+    }
+
+    if (flag) {
+      event.stopPropagation();
+      event.preventDefault();
+    }
+  };
+
+  onButtonClick(event) {
+    if (this.isOpen()) {
+      this.closePopup();
+      this.buttonNode.focus();
+    } else {
+      this.openPopup();
+      this.setFocusToFirstMenuitem();
+    }
+
+    event.stopPropagation();
+    event.preventDefault();
+  }
+
+  onMenuitemKeydown(event) {
+    const tgt = event.currentTarget;
+    const key = event.key;
+    let flag = false;
+
+    const isPrintableCharacter = (str) => str.length === 1 && str.match(/\S/);
+
+    if (event.ctrlKey || event.altKey || event.metaKey) {
+      return;
+    }
+
+    if (event.shiftKey) {
+      if (isPrintableCharacter(key)) {
+        this.setFocusByFirstCharacter(tgt, key);
+        flag = true;
+      }
+
+      if (event.key === "Tab") {
+        this.buttonNode.focus();
+        this.closePopup();
+        flag = true;
+      }
+    } else {
+      switch (key) {
+        case " ":
+          window.location.href = tgt.href;
+          break;
+
+        case "Esc":
+        case "Escape":
+          this.closePopup();
+          this.buttonNode.focus();
+          flag = true;
+          break;
+
+        case "Up":
+        case "ArrowUp":
+          this.setFocusToPreviousMenuitem(tgt);
+          flag = true;
+          break;
+
+        case "ArrowDown":
+        case "Down":
+          this.setFocusToNextMenuitem(tgt);
+          flag = true;
+          break;
+
+        case "Home":
+        case "PageUp":
+          this.setFocusToFirstMenuitem();
+          flag = true;
+          break;
+
+        case "End":
+        case "PageDown":
+          this.setFocusToLastMenuitem();
+          flag = true;
+          break;
+
+        case "Tab":
+          this.closePopup();
+          break;
+
+        default:
+          if (isPrintableCharacter(key)) {
+            this.setFocusByFirstCharacter(tgt, key);
+            flag = true;
+          }
+          break;
+      }
+    }
+
+    if (flag) {
+      event.stopPropagation();
+      event.preventDefault();
+    }
+  }
+
+  onMenuitemMouseover(event) {
+    const tgt = event.currentTarget;
+    tgt.focus();
+  }
+
+  onBackgroundMousedown(event) {
+    if (!this.domNode.contains(event.target)) {
+      if (this.isOpen()) {
+        this.closePopup();
+        this.buttonNode.focus();
+      }
+    }
+  }
+}
+
+const menuButtons = document.querySelectorAll(".menu-button-links");
+for (const button of menuButtons) {
+  new MenuButtonLinks(button);
+}
diff --git a/themes/custom-theme-template/login/resources/js/passwordVisibility.js b/themes/custom-theme-template/login/resources/js/passwordVisibility.js
new file mode 100644
index 0000000000000000000000000000000000000000..b9b7dbdbedab216e97ba99ec96e1da90fe0b3c58
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/passwordVisibility.js
@@ -0,0 +1,15 @@
+const toggle = (button) =>  {
+    const passwordElement = document.getElementById(button.getAttribute('aria-controls'));
+    if (passwordElement.type === "password") {
+        passwordElement.type = "text";
+        button.children.item(0).className = button.dataset.iconHide;
+        button.setAttribute("aria-label", button.dataset.labelHide);
+    } else if(passwordElement.type === "text") {
+        passwordElement.type = "password";
+        button.children.item(0).className = button.dataset.iconShow;
+        button.setAttribute("aria-label", button.dataset.labelShow);
+    }
+}
+
+document.querySelectorAll('[data-password-toggle]')
+    .forEach(button => button.onclick = () => toggle(button));
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/resources/js/userProfile.js b/themes/custom-theme-template/login/resources/js/userProfile.js
new file mode 100644
index 0000000000000000000000000000000000000000..1ea3bf87c7f8a6fac02914453afe78b881352ef0
--- /dev/null
+++ b/themes/custom-theme-template/login/resources/js/userProfile.js
@@ -0,0 +1,71 @@
+// @ts-check
+/**
+ * @typedef {Object} AnnotationDescriptor
+ * @property {string} name - The name of the field to register (e.g. `numberFormat`).
+ * @property {(element: HTMLElement) => (() => void) | void} onAdd - The function to call when a new element is added to the DOM.
+ */
+
+const observer = new MutationObserver(onMutate);
+observer.observe(document.body, { childList: true, subtree: true });
+
+/** @type {AnnotationDescriptor[]} */
+const descriptors = [];
+
+/** @type {WeakMap<HTMLElement, () => void>} */
+const cleanupFunctions = new WeakMap();
+
+/**
+ * @param {AnnotationDescriptor} descriptor
+ */
+export function registerElementAnnotatedBy(descriptor) {
+  descriptors.push(descriptor);
+
+  document.querySelectorAll(`[data-${descriptor.name}]`).forEach((element) => {
+    if (element instanceof HTMLElement) {
+      handleNewElement(element, descriptor);
+    }
+  });
+}
+
+/**
+ * @type {MutationCallback}
+ */
+function onMutate(mutations) {
+  const removedNodes = mutations.flatMap((mutation) => Array.from(mutation.removedNodes));
+
+  for (const node of removedNodes) {
+    if (!(node instanceof HTMLElement)) {
+      continue;
+    }
+
+    const handleRemovedElement = cleanupFunctions.get(node);
+
+    if (handleRemovedElement) {
+      handleRemovedElement();
+    }
+
+    cleanupFunctions.delete(node);
+  }
+
+  const addedNodes = mutations.flatMap((mutation) => Array.from(mutation.addedNodes));
+
+  for (const descriptor of descriptors) {
+    for (const node of addedNodes) {
+      if (node instanceof HTMLElement && node.hasAttribute(`data-${descriptor.name}`)) {
+        handleNewElement(node, descriptor);
+      }
+    }
+  }
+}
+
+/**
+ * @param {HTMLElement} element
+ * @param {AnnotationDescriptor} descriptor
+ */
+function handleNewElement(element, descriptor) {
+  const cleanup = descriptor.onAdd(element);
+
+  if (cleanup) {
+    cleanupFunctions.set(element, cleanup);
+  }
+}
diff --git a/themes/custom-theme-template/login/saml-post-form.ftl b/themes/custom-theme-template/login/saml-post-form.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..94b0c30fca1861f00036e13eaebe8fd96d82ea7a
--- /dev/null
+++ b/themes/custom-theme-template/login/saml-post-form.ftl
@@ -0,0 +1,25 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout; section>
+    <#if section = "header">
+        ${msg("saml.post-form.title")}
+    <#elseif section = "form">
+        <script>window.onload = function() {document.forms[0].submit()};</script>
+        <p>${msg("saml.post-form.message")}</p>
+        <form name="saml-post-binding" method="post" action="${samlPost.url}">
+            <#if samlPost.SAMLRequest??>
+                <input type="hidden" name="SAMLRequest" value="${samlPost.SAMLRequest}"/>
+            </#if>
+            <#if samlPost.SAMLResponse??>
+                <input type="hidden" name="SAMLResponse" value="${samlPost.SAMLResponse}"/>
+            </#if>
+            <#if samlPost.relayState??>
+                <input type="hidden" name="RelayState" value="${samlPost.relayState}"/>
+            </#if>
+
+            <noscript>
+                <p>${msg("saml.post-form.js-disabled")}</p>
+                <input type="submit" value="${msg("doContinue")}"/>
+            </noscript>
+        </form>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/select-authenticator.ftl b/themes/custom-theme-template/login/select-authenticator.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..4fbe2d33df3be7480f968655244d4cbcd1651f44
--- /dev/null
+++ b/themes/custom-theme-template/login/select-authenticator.ftl
@@ -0,0 +1,36 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayInfo=false; section>
+    <#if section = "header" || section = "show-username">
+        <#if section = "header">
+            ${msg("loginChooseAuthenticator")}
+        </#if>
+    <#elseif section = "form">
+
+        <form id="kc-select-credential-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcSelectAuthListClass!}">
+                <#list auth.authenticationSelections as authenticationSelection>
+                    <button class="${properties.kcSelectAuthListItemClass!}" type="submit" name="authenticationExecution" value="${authenticationSelection.authExecId}">
+
+                        <div class="${properties.kcSelectAuthListItemIconClass!}">
+                            <i class="${properties['${authenticationSelection.iconCssClass}']!authenticationSelection.iconCssClass} ${properties.kcSelectAuthListItemIconPropertyClass!}"></i>
+                        </div>
+                        <div class="${properties.kcSelectAuthListItemBodyClass!}">
+                            <div class="${properties.kcSelectAuthListItemHeadingClass!}">
+                                ${msg('${authenticationSelection.displayName}')}
+                            </div>
+                            <div class="${properties.kcSelectAuthListItemDescriptionClass!}">
+                                ${msg('${authenticationSelection.helpText}')}
+                            </div>
+                        </div>
+                        <div class="${properties.kcSelectAuthListItemFillClass!}"></div>
+                        <div class="${properties.kcSelectAuthListItemArrowClass!}">
+                            <i class="${properties.kcSelectAuthListItemArrowIconClass!}"></i>
+                        </div>
+                    </button>
+                </#list>
+            </div>
+        </form>
+
+    </#if>
+</@layout.registrationLayout>
+
diff --git a/themes/custom-theme-template/login/template.ftl b/themes/custom-theme-template/login/template.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..a70b230b8fd0181b9d807b637a76841f6f5a1413
--- /dev/null
+++ b/themes/custom-theme-template/login/template.ftl
@@ -0,0 +1,168 @@
+<#macro registrationLayout bodyClass="" displayInfo=false displayMessage=true displayRequiredFields=false>
+<!DOCTYPE html>
+<html class="${properties.kcHtmlClass!}"<#if realm.internationalizationEnabled> lang="${locale.currentLanguageTag}"</#if>>
+
+<head>
+    <meta charset="utf-8">
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <meta name="robots" content="noindex, nofollow">
+
+    <#if properties.meta?has_content>
+        <#list properties.meta?split(' ') as meta>
+            <meta name="${meta?split('==')[0]}" content="${meta?split('==')[1]}"/>
+        </#list>
+    </#if>
+    <title>${msg("loginTitle",(realm.displayName!''))}</title>
+    <link rel="icon" href="${url.resourcesPath}/img/favicon.ico" />
+    <#if properties.stylesCommon?has_content>
+        <#list properties.stylesCommon?split(' ') as style>
+            <link href="${url.resourcesCommonPath}/${style}" rel="stylesheet" />
+        </#list>
+    </#if>
+    <#if properties.styles?has_content>
+        <#list properties.styles?split(' ') as style>
+            <link href="${url.resourcesPath}/${style}" rel="stylesheet" />
+        </#list>
+    </#if>
+    <#if properties.scripts?has_content>
+        <#list properties.scripts?split(' ') as script>
+            <script src="${url.resourcesPath}/${script}" type="text/javascript"></script>
+        </#list>
+    </#if>
+    <script src="${url.resourcesPath}/js/menu-button-links.js" type="module"></script>
+    <#if scripts??>
+        <#list scripts as script>
+            <script src="${script}" type="text/javascript"></script>
+        </#list>
+    </#if>
+    <#if authenticationSession??>
+        <script type="module">
+            import { checkCookiesAndSetTimer } from "${url.resourcesPath}/js/authChecker.js";
+
+            checkCookiesAndSetTimer(
+              "${authenticationSession.authSessionId}",
+              "${authenticationSession.tabId}",
+              "${url.ssoLoginInOtherTabsUrl?no_esc}"
+            );
+        </script>
+    </#if>
+</head>
+
+<body class="${properties.kcBodyClass!}">
+<div class="${properties.kcLoginClass!}">
+    <div id="kc-header" class="${properties.kcHeaderClass!}">
+        <div id="kc-header-wrapper"
+             class="${properties.kcHeaderWrapperClass!}">${kcSanitize(msg("loginTitleHtml",(realm.displayNameHtml!'')))?no_esc}</div>
+    </div>
+    <div class="${properties.kcFormCardClass!}">
+        <header class="${properties.kcFormHeaderClass!}">
+            <#if realm.internationalizationEnabled  && locale.supported?size gt 1>
+                <div class="${properties.kcLocaleMainClass!}" id="kc-locale">
+                    <div id="kc-locale-wrapper" class="${properties.kcLocaleWrapperClass!}">
+                        <div id="kc-locale-dropdown" class="menu-button-links ${properties.kcLocaleDropDownClass!}">
+                            <button tabindex="1" id="kc-current-locale-link" aria-label="${msg("languages")}" aria-haspopup="true" aria-expanded="false" aria-controls="language-switch1">${locale.current}</button>
+                            <ul role="menu" tabindex="-1" aria-labelledby="kc-current-locale-link" aria-activedescendant="" id="language-switch1" class="${properties.kcLocaleListClass!}">
+                                <#assign i = 1>
+                                <#list locale.supported as l>
+                                    <li class="${properties.kcLocaleListItemClass!}" role="none">
+                                        <a role="menuitem" id="language-${i}" class="${properties.kcLocaleItemClass!}" href="${l.url}">${l.label}</a>
+                                    </li>
+                                    <#assign i++>
+                                </#list>
+                            </ul>
+                        </div>
+                    </div>
+                </div>
+            </#if>
+        <#if !(auth?has_content && auth.showUsername() && !auth.showResetCredentials())>
+            <#if displayRequiredFields>
+                <div class="${properties.kcContentWrapperClass!}">
+                    <div class="${properties.kcLabelWrapperClass!} subtitle">
+                        <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
+                    </div>
+                    <div class="col-md-10">
+                        <h1 id="kc-page-title"><#nested "header"></h1>
+                    </div>
+                </div>
+            <#else>
+                <h1 id="kc-page-title"><#nested "header"></h1>
+            </#if>
+        <#else>
+            <#if displayRequiredFields>
+                <div class="${properties.kcContentWrapperClass!}">
+                    <div class="${properties.kcLabelWrapperClass!} subtitle">
+                        <span class="subtitle"><span class="required">*</span> ${msg("requiredFields")}</span>
+                    </div>
+                    <div class="col-md-10">
+                        <#nested "show-username">
+                        <div id="kc-username" class="${properties.kcFormGroupClass!}">
+                            <label id="kc-attempted-username">${auth.attemptedUsername}</label>
+                            <a id="reset-login" href="${url.loginRestartFlowUrl}" aria-label="${msg("restartLoginTooltip")}">
+                                <div class="kc-login-tooltip">
+                                    <i class="${properties.kcResetFlowIcon!}"></i>
+                                    <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
+                                </div>
+                            </a>
+                        </div>
+                    </div>
+                </div>
+            <#else>
+                <#nested "show-username">
+                <div id="kc-username" class="${properties.kcFormGroupClass!}">
+                    <label id="kc-attempted-username">${auth.attemptedUsername}</label>
+                    <a id="reset-login" href="${url.loginRestartFlowUrl}" aria-label="${msg("restartLoginTooltip")}">
+                        <div class="kc-login-tooltip">
+                            <i class="${properties.kcResetFlowIcon!}"></i>
+                            <span class="kc-tooltip-text">${msg("restartLoginTooltip")}</span>
+                        </div>
+                    </a>
+                </div>
+            </#if>
+        </#if>
+      </header>
+      <div id="kc-content">
+        <div id="kc-content-wrapper">
+
+          <#-- App-initiated actions should not see warning messages about the need to complete the action -->
+          <#-- during login.                                                                               -->
+          <#if displayMessage && message?has_content && (message.type != 'warning' || !isAppInitiatedAction??)>
+              <div class="alert-${message.type} ${properties.kcAlertClass!} pf-m-<#if message.type = 'error'>danger<#else>${message.type}</#if>">
+                  <div class="pf-c-alert__icon">
+                      <#if message.type = 'success'><span class="${properties.kcFeedbackSuccessIcon!}"></span></#if>
+                      <#if message.type = 'warning'><span class="${properties.kcFeedbackWarningIcon!}"></span></#if>
+                      <#if message.type = 'error'><span class="${properties.kcFeedbackErrorIcon!}"></span></#if>
+                      <#if message.type = 'info'><span class="${properties.kcFeedbackInfoIcon!}"></span></#if>
+                  </div>
+                      <span class="${properties.kcAlertTitleClass!}">${kcSanitize(message.summary)?no_esc}</span>
+              </div>
+          </#if>
+
+          <#nested "form">
+
+          <#if auth?has_content && auth.showTryAnotherWayLink()>
+              <form id="kc-select-try-another-way-form" action="${url.loginAction}" method="post">
+                  <div class="${properties.kcFormGroupClass!}">
+                      <input type="hidden" name="tryAnotherWay" value="on"/>
+                      <a href="#" id="try-another-way"
+                         onclick="document.forms['kc-select-try-another-way-form'].submit();return false;">${msg("doTryAnotherWay")}</a>
+                  </div>
+              </form>
+          </#if>
+
+          <#nested "socialProviders">
+
+          <#if displayInfo>
+              <div id="kc-info" class="${properties.kcSignUpClass!}">
+                  <div id="kc-info-wrapper" class="${properties.kcInfoAreaWrapperClass!}">
+                      <#nested "info">
+                  </div>
+              </div>
+          </#if>
+        </div>
+      </div>
+
+    </div>
+  </div>
+</body>
+</html>
+</#macro>
diff --git a/themes/custom-theme-template/login/terms.ftl b/themes/custom-theme-template/login/terms.ftl
new file mode 100755
index 0000000000000000000000000000000000000000..687b192c94f0e7bd994db75e9da7445296bffdb8
--- /dev/null
+++ b/themes/custom-theme-template/login/terms.ftl
@@ -0,0 +1,15 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=false; section>
+    <#if section = "header">
+        ${msg("termsTitle")}
+    <#elseif section = "form">
+    <div id="kc-terms-text">
+        ${kcSanitize(msg("termsText"))?no_esc}
+    </div>
+    <form class="form-actions" action="${url.loginAction}" method="POST">
+        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" name="accept" id="kc-accept" type="submit" value="${msg("doAccept")}"/>
+        <input class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" name="cancel" id="kc-decline" type="submit" value="${msg("doDecline")}"/>
+    </form>
+    <div class="clearfix"></div>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/theme.properties b/themes/custom-theme-template/login/theme.properties
new file mode 100644
index 0000000000000000000000000000000000000000..4162299c96377d8604c3eedfe1e13f3f48fea955
--- /dev/null
+++ b/themes/custom-theme-template/login/theme.properties
@@ -0,0 +1 @@
+locales=ar,ca,cs,da,de,el,en,es,fa,fr,fi,hu,it,ja,lt,nl,no,pl,pt-BR,ru,sk,sv,th,tr,uk,zh-CN
diff --git a/themes/custom-theme-template/login/update-email.ftl b/themes/custom-theme-template/login/update-email.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..1650e25afad4992bf9fca0044c54a87f99300705
--- /dev/null
+++ b/themes/custom-theme-template/login/update-email.ftl
@@ -0,0 +1,30 @@
+<#import "template.ftl" as layout>
+<#import "password-commons.ftl" as passwordCommons>
+<#import "user-profile-commons.ftl" as userProfileCommons>
+<@layout.registrationLayout displayMessage=messagesPerField.exists('global') displayRequiredFields=true; section>
+    <#if section = "header">
+        ${msg("updateEmailTitle")}
+    <#elseif section = "form">
+        <form id="kc-update-email-form" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <@userProfileCommons.userProfileFormFields/>
+
+            <div class="${properties.kcFormGroupClass!}">
+                <div id="kc-form-options" class="${properties.kcFormOptionsClass!}">
+                    <div class="${properties.kcFormOptionsWrapperClass!}">
+                    </div>
+                </div>
+
+                <@passwordCommons.logoutOtherSessions/>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <#if isAppInitiatedAction??>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                        <button class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonLargeClass!}" type="submit" name="cancel-aia" value="true" />${msg("doCancel")}</button>
+                    <#else>
+                        <input class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}" type="submit" value="${msg("doSubmit")}" />
+                    </#if>
+                </div>
+            </div>
+        </form>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/user-profile-commons.ftl b/themes/custom-theme-template/login/user-profile-commons.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..25d26d89b36d9ddbe096103222925bd975ef55b2
--- /dev/null
+++ b/themes/custom-theme-template/login/user-profile-commons.ftl
@@ -0,0 +1,205 @@
+<#macro userProfileFormFields>
+	<#assign currentGroup="">
+	
+	<#list profile.attributes as attribute>
+
+		<#assign group = (attribute.group)!"">
+		<#if group != currentGroup>
+			<#assign currentGroup=group>
+			<#if currentGroup != "">
+				<div class="${properties.kcFormGroupClass!}"
+				<#list group.html5DataAnnotations as key, value>
+					data-${key}="${value}"
+				</#list>
+				>
+	
+					<#assign groupDisplayHeader=group.displayHeader!"">
+					<#if groupDisplayHeader != "">
+						<#assign groupHeaderText=advancedMsg(groupDisplayHeader)!group>
+					<#else>
+						<#assign groupHeaderText=group.name!"">
+					</#if>
+					<div class="${properties.kcContentWrapperClass!}">
+						<label id="header-${attribute.group.name}" class="${kcFormGroupHeader!}">${groupHeaderText}</label>
+					</div>
+	
+					<#assign groupDisplayDescription=group.displayDescription!"">
+					<#if groupDisplayDescription != "">
+						<#assign groupDescriptionText=advancedMsg(groupDisplayDescription)!"">
+						<div class="${properties.kcLabelWrapperClass!}">
+							<label id="description-${group.name}" class="${properties.kcLabelClass!}">${groupDescriptionText}</label>
+						</div>
+					</#if>
+				</div>
+			</#if>
+		</#if>
+
+		<#nested "beforeField" attribute>
+		<div class="${properties.kcFormGroupClass!}">
+			<div class="${properties.kcLabelWrapperClass!}">
+				<label for="${attribute.name}" class="${properties.kcLabelClass!}">${advancedMsg(attribute.displayName!'')}</label>
+				<#if attribute.required>*</#if>
+			</div>
+			<div class="${properties.kcInputWrapperClass!}">
+				<#if attribute.annotations.inputHelperTextBefore??>
+					<div class="${properties.kcInputHelperTextBeforeClass!}" id="form-help-text-before-${attribute.name}" aria-live="polite">${kcSanitize(advancedMsg(attribute.annotations.inputHelperTextBefore))?no_esc}</div>
+				</#if>
+				<@inputFieldByType attribute=attribute/>
+				<#if messagesPerField.existsError('${attribute.name}')>
+					<span id="input-error-${attribute.name}" class="${properties.kcInputErrorMessageClass!}" aria-live="polite">
+						${kcSanitize(messagesPerField.get('${attribute.name}'))?no_esc}
+					</span>
+				</#if>
+				<#if attribute.annotations.inputHelperTextAfter??>
+					<div class="${properties.kcInputHelperTextAfterClass!}" id="form-help-text-after-${attribute.name}" aria-live="polite">${kcSanitize(advancedMsg(attribute.annotations.inputHelperTextAfter))?no_esc}</div>
+				</#if>
+			</div>
+		</div>
+		<#nested "afterField" attribute>
+	</#list>
+
+	<#list profile.html5DataAnnotations?keys as key>
+		<script type="module" src="${url.resourcesPath}/js/${key}.js"></script>
+	</#list>
+</#macro>
+
+<#macro inputFieldByType attribute>
+	<#switch attribute.annotations.inputType!''>
+	<#case 'textarea'>
+		<@textareaTag attribute=attribute/>
+		<#break>
+	<#case 'select'>
+	<#case 'multiselect'>
+		<@selectTag attribute=attribute/>
+		<#break>
+	<#case 'select-radiobuttons'>
+	<#case 'multiselect-checkboxes'>
+		<@inputTagSelects attribute=attribute/>
+		<#break>
+	<#default>
+		<#if attribute.multivalued && attribute.values?has_content>
+			<#list attribute.values as value>
+				<@inputTag attribute=attribute value=value!''/>
+			</#list>
+		<#else>
+			<@inputTag attribute=attribute value=attribute.value!''/>
+		</#if>
+	</#switch>
+</#macro>
+
+<#macro inputTag attribute value>
+	<input type="<@inputTagType attribute=attribute/>" id="${attribute.name}" name="${attribute.name}" value="${(value!'')}" class="${properties.kcInputClass!}"
+		aria-invalid="<#if messagesPerField.existsError('${attribute.name}')>true</#if>"
+		<#if attribute.readOnly>disabled</#if>
+		<#if attribute.autocomplete??>autocomplete="${attribute.autocomplete}"</#if>
+		<#if attribute.annotations.inputTypePlaceholder??>placeholder="${attribute.annotations.inputTypePlaceholder}"</#if>
+		<#if attribute.annotations.inputTypePattern??>pattern="${attribute.annotations.inputTypePattern}"</#if>
+		<#if attribute.annotations.inputTypeSize??>size="${attribute.annotations.inputTypeSize}"</#if>
+		<#if attribute.annotations.inputTypeMaxlength??>maxlength="${attribute.annotations.inputTypeMaxlength}"</#if>
+		<#if attribute.annotations.inputTypeMinlength??>minlength="${attribute.annotations.inputTypeMinlength}"</#if>
+		<#if attribute.annotations.inputTypeMax??>max="${attribute.annotations.inputTypeMax}"</#if>
+		<#if attribute.annotations.inputTypeMin??>min="${attribute.annotations.inputTypeMin}"</#if>
+		<#if attribute.annotations.inputTypeStep??>step="${attribute.annotations.inputTypeStep}"</#if>
+		<#if attribute.annotations.inputTypeStep??>step="${attribute.annotations.inputTypeStep}"</#if>
+		<#list attribute.html5DataAnnotations as key, value>
+    		data-${key}="${value}"
+		</#list>
+	/>
+</#macro>
+
+<#macro inputTagType attribute>
+	<#compress>
+	<#if attribute.annotations.inputType??>
+		<#if attribute.annotations.inputType?starts_with("html5-")>
+			${attribute.annotations.inputType[6..]}
+		<#else>
+			${attribute.annotations.inputType}
+		</#if>
+	<#else>
+	text
+	</#if>
+	</#compress>
+</#macro>
+
+<#macro textareaTag attribute>
+	<textarea id="${attribute.name}" name="${attribute.name}" class="${properties.kcInputClass!}"
+		aria-invalid="<#if messagesPerField.existsError('${attribute.name}')>true</#if>"
+		<#if attribute.readOnly>disabled</#if>
+		<#if attribute.annotations.inputTypeCols??>cols="${attribute.annotations.inputTypeCols}"</#if>
+		<#if attribute.annotations.inputTypeRows??>rows="${attribute.annotations.inputTypeRows}"</#if>
+		<#if attribute.annotations.inputTypeMaxlength??>maxlength="${attribute.annotations.inputTypeMaxlength}"</#if>
+	>${(attribute.value!'')}</textarea>
+</#macro>
+
+<#macro selectTag attribute>
+	<select id="${attribute.name}" name="${attribute.name}" class="${properties.kcInputClass!}"
+		aria-invalid="<#if messagesPerField.existsError('${attribute.name}')>true</#if>"
+		<#if attribute.readOnly>disabled</#if>
+		<#if attribute.annotations.inputType=='multiselect'>multiple</#if>
+		<#if attribute.annotations.inputTypeSize??>size="${attribute.annotations.inputTypeSize}"</#if>
+	>
+	<#if attribute.annotations.inputType=='select'>
+		<option value=""></option>
+	</#if>
+
+	<#if attribute.annotations.inputOptionsFromValidation?? && attribute.validators[attribute.annotations.inputOptionsFromValidation]?? && attribute.validators[attribute.annotations.inputOptionsFromValidation].options??>
+		<#assign options=attribute.validators[attribute.annotations.inputOptionsFromValidation].options>
+	<#elseif attribute.validators.options?? && attribute.validators.options.options??>
+		<#assign options=attribute.validators.options.options>
+	<#else>
+		<#assign options=[]>
+	</#if>
+
+	<#list options as option>
+		<option value="${option}" <#if attribute.values?seq_contains(option)>selected</#if>><@selectOptionLabelText attribute=attribute option=option/></option>
+	</#list>
+
+	</select>
+</#macro>
+
+<#macro inputTagSelects attribute>
+	<#if attribute.annotations.inputType=='select-radiobuttons'>
+		<#assign inputType='radio'>
+		<#assign classDiv=properties.kcInputClassRadio!>
+		<#assign classInput=properties.kcInputClassRadioInput!>
+		<#assign classLabel=properties.kcInputClassRadioLabel!>
+	<#else>
+		<#assign inputType='checkbox'>
+		<#assign classDiv=properties.kcInputClassCheckbox!>
+		<#assign classInput=properties.kcInputClassCheckboxInput!>
+		<#assign classLabel=properties.kcInputClassCheckboxLabel!>
+	</#if>
+
+	<#if attribute.annotations.inputOptionsFromValidation?? && attribute.validators[attribute.annotations.inputOptionsFromValidation]?? && attribute.validators[attribute.annotations.inputOptionsFromValidation].options??>
+		<#assign options=attribute.validators[attribute.annotations.inputOptionsFromValidation].options>
+	<#elseif attribute.validators.options?? && attribute.validators.options.options??>
+		<#assign options=attribute.validators.options.options>
+	<#else>
+		<#assign options=[]>
+	</#if>
+
+	<#list options as option>
+		<div class="${classDiv}">
+			<input type="${inputType}" id="${attribute.name}-${option}" name="${attribute.name}" value="${option}" class="${classInput}"
+				aria-invalid="<#if messagesPerField.existsError('${attribute.name}')>true</#if>"
+				<#if attribute.readOnly>disabled</#if>
+				<#if attribute.values?seq_contains(option)>checked</#if>
+			/>
+			<label for="${attribute.name}-${option}" class="${classLabel}<#if attribute.readOnly> ${properties.kcInputClassRadioCheckboxLabelDisabled!}</#if>"><@selectOptionLabelText attribute=attribute option=option/></label>
+		</div>
+	</#list>
+</#macro>
+
+<#macro selectOptionLabelText attribute option>
+	<#compress>
+	<#if attribute.annotations.inputOptionLabels??>
+		${advancedMsg(attribute.annotations.inputOptionLabels[option]!option)}
+	<#else>
+		<#if attribute.annotations.inputOptionLabelsI18nPrefix??>
+			${msg(attribute.annotations.inputOptionLabelsI18nPrefix + '.' + option)}
+		<#else>
+			${option}
+		</#if>
+	</#if>
+	</#compress>
+</#macro>
diff --git a/themes/custom-theme-template/login/webauthn-authenticate.ftl b/themes/custom-theme-template/login/webauthn-authenticate.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..8a0a62e0ac2537940eeb106963c43e1947f17579
--- /dev/null
+++ b/themes/custom-theme-template/login/webauthn-authenticate.ftl
@@ -0,0 +1,172 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=!messagesPerField.existsError('username') displayInfo=(realm.password && realm.registrationAllowed && !registrationDisabled??); section>
+    <#if section = "title">
+     title
+    <#elseif section = "header">
+        ${kcSanitize(msg("webauthn-login-title"))?no_esc}
+    <#elseif section = "form">
+        <div id="kc-form-webauthn" class="${properties.kcFormClass!}">
+            <form id="webauth" action="${url.loginAction}" method="post">
+                <input type="hidden" id="clientDataJSON" name="clientDataJSON"/>
+                <input type="hidden" id="authenticatorData" name="authenticatorData"/>
+                <input type="hidden" id="signature" name="signature"/>
+                <input type="hidden" id="credentialId" name="credentialId"/>
+                <input type="hidden" id="userHandle" name="userHandle"/>
+                <input type="hidden" id="error" name="error"/>
+            </form>
+
+            <div class="${properties.kcFormGroupClass!} no-bottom-margin">
+                <#if authenticators??>
+                    <form id="authn_select" class="${properties.kcFormClass!}">
+                        <#list authenticators.authenticators as authenticator>
+                            <input type="hidden" name="authn_use_chk" value="${authenticator.credentialId}"/>
+                        </#list>
+                    </form>
+
+                    <#if shouldDisplayAuthenticators?? && shouldDisplayAuthenticators>
+                        <#if authenticators.authenticators?size gt 1>
+                            <p class="${properties.kcSelectAuthListItemTitle!}">${kcSanitize(msg("webauthn-available-authenticators"))?no_esc}</p>
+                        </#if>
+
+                        <div class="${properties.kcFormClass!}">
+                            <#list authenticators.authenticators as authenticator>
+                                <div id="kc-webauthn-authenticator" class="${properties.kcSelectAuthListItemClass!}">
+                                    <div class="${properties.kcSelectAuthListItemIconClass!}">
+                                        <i class="${(properties['${authenticator.transports.iconClass}'])!'${properties.kcWebAuthnDefaultIcon!}'} ${properties.kcSelectAuthListItemIconPropertyClass!}"></i>
+                                    </div>
+                                    <div class="${properties.kcSelectAuthListItemBodyClass!}">
+                                        <div id="kc-webauthn-authenticator-label"
+                                             class="${properties.kcSelectAuthListItemHeadingClass!}">
+                                            ${kcSanitize(msg('${authenticator.label}'))?no_esc}
+                                        </div>
+
+                                        <#if authenticator.transports?? && authenticator.transports.displayNameProperties?has_content>
+                                            <div id="kc-webauthn-authenticator-transport"
+                                                 class="${properties.kcSelectAuthListItemDescriptionClass!}">
+                                                <#list authenticator.transports.displayNameProperties as nameProperty>
+                                                    <span>${kcSanitize(msg('${nameProperty!}'))?no_esc}</span>
+                                                    <#if nameProperty?has_next>
+                                                        <span>, </span>
+                                                    </#if>
+                                                </#list>
+                                            </div>
+                                        </#if>
+
+                                        <div class="${properties.kcSelectAuthListItemDescriptionClass!}">
+                                            <span id="kc-webauthn-authenticator-created-label">
+                                                ${kcSanitize(msg('webauthn-createdAt-label'))?no_esc}
+                                            </span>
+                                            <span id="kc-webauthn-authenticator-created">
+                                                ${kcSanitize(authenticator.createdAt)?no_esc}
+                                            </span>
+                                        </div>
+                                    </div>
+                                    <div class="${properties.kcSelectAuthListItemFillClass!}"></div>
+                                </div>
+                            </#list>
+                        </div>
+                    </#if>
+                </#if>
+
+                <div id="kc-form-buttons" class="${properties.kcFormButtonsClass!}">
+                    <input id="authenticateWebAuthnButton" type="button" onclick="webAuthnAuthenticate()" autofocus="autofocus"
+                           value="${kcSanitize(msg("webauthn-doAuthenticate"))}"
+                           class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"/>
+                </div>
+            </div>
+        </div>
+
+    <script type="text/javascript" src="${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js"></script>
+    <script type="text/javascript" src="${url.resourcesPath}/js/base64url.js"></script>
+    <script type="text/javascript">
+        function webAuthnAuthenticate() {
+            let isUserIdentified = ${isUserIdentified};
+            if (!isUserIdentified) {
+                doAuthenticate([]);
+                return;
+            }
+            checkAllowCredentials();
+        }
+
+        function checkAllowCredentials() {
+            let allowCredentials = [];
+            let authn_use = document.forms['authn_select'].authn_use_chk;
+
+            if (authn_use !== undefined) {
+                if (authn_use.length === undefined) {
+                    allowCredentials.push({
+                        id: base64url.decode(authn_use.value, {loose: true}),
+                        type: 'public-key',
+                    });
+                } else {
+                    for (let i = 0; i < authn_use.length; i++) {
+                        allowCredentials.push({
+                            id: base64url.decode(authn_use[i].value, {loose: true}),
+                            type: 'public-key',
+                        });
+                    }
+                }
+            }
+            doAuthenticate(allowCredentials);
+        }
+
+
+    function doAuthenticate(allowCredentials) {
+
+        // Check if WebAuthn is supported by this browser
+        if (!window.PublicKeyCredential) {
+            $("#error").val("${msg("webauthn-unsupported-browser-text")?no_esc}");
+            $("#webauth").submit();
+            return;
+        }
+
+        let challenge = "${challenge}";
+        let userVerification = "${userVerification}";
+        let rpId = "${rpId}";
+        let publicKey = {
+            rpId : rpId,
+            challenge: base64url.decode(challenge, { loose: true })
+        };
+
+        let createTimeout = ${createTimeout};
+        if (createTimeout !== 0) publicKey.timeout = createTimeout * 1000;
+
+        if (allowCredentials.length) {
+            publicKey.allowCredentials = allowCredentials;
+        }
+
+        if (userVerification !== 'not specified') publicKey.userVerification = userVerification;
+
+        navigator.credentials.get({publicKey})
+            .then((result) => {
+                window.result = result;
+
+                let clientDataJSON = result.response.clientDataJSON;
+                let authenticatorData = result.response.authenticatorData;
+                let signature = result.response.signature;
+
+                $("#clientDataJSON").val(base64url.encode(new Uint8Array(clientDataJSON), { pad: false }));
+                $("#authenticatorData").val(base64url.encode(new Uint8Array(authenticatorData), { pad: false }));
+                $("#signature").val(base64url.encode(new Uint8Array(signature), { pad: false }));
+                $("#credentialId").val(result.id);
+                if(result.response.userHandle) {
+                    $("#userHandle").val(base64url.encode(new Uint8Array(result.response.userHandle), { pad: false }));
+                }
+                $("#webauth").submit();
+            })
+            .catch((err) => {
+                $("#error").val(err);
+                $("#webauth").submit();
+            })
+        ;
+    }
+
+    </script>
+    <#elseif section = "info">
+        <#if realm.password && realm.registrationAllowed && !registrationDisabled??>
+            <div id="kc-registration">
+                <span>${msg("noAccount")} <a tabindex="6" href="${url.registrationUrl}">${msg("doRegister")}</a></span>
+            </div>
+        </#if>
+    </#if>
+</@layout.registrationLayout>
diff --git a/themes/custom-theme-template/login/webauthn-error.ftl b/themes/custom-theme-template/login/webauthn-error.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..2474a3f6cc77aebbed181db1ebb1fb0c3463bd33
--- /dev/null
+++ b/themes/custom-theme-template/login/webauthn-error.ftl
@@ -0,0 +1,36 @@
+<#import "template.ftl" as layout>
+<@layout.registrationLayout displayMessage=true; section>
+    <#if section = "header">
+        ${kcSanitize(msg("webauthn-error-title"))?no_esc}
+    <#elseif section = "form">
+
+        <script type="text/javascript">
+            refreshPage = () => {
+                document.getElementById('isSetRetry').value = 'retry';
+                document.getElementById('executionValue').value = '${execution}';
+                document.getElementById('kc-error-credential-form').submit();
+            }
+        </script>
+
+        <form id="kc-error-credential-form" class="${properties.kcFormClass!}" action="${url.loginAction}"
+              method="post">
+            <input type="hidden" id="executionValue" name="authenticationExecution"/>
+            <input type="hidden" id="isSetRetry" name="isSetRetry"/>
+        </form>
+
+        <input tabindex="4" onclick="refreshPage()" type="button"
+               class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+               name="try-again" id="kc-try-again" value="${kcSanitize(msg("doTryAgain"))?no_esc}"
+        />
+
+        <#if isAppInitiatedAction??>
+            <form action="${url.loginAction}" class="${properties.kcFormClass!}" id="kc-webauthn-settings-form" method="post">
+                <button type="submit"
+                        class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                        id="cancelWebAuthnAIA" name="cancel-aia" value="true">${msg("doCancel")}
+                </button>
+            </form>
+        </#if>
+
+    </#if>
+</@layout.registrationLayout>
\ No newline at end of file
diff --git a/themes/custom-theme-template/login/webauthn-register.ftl b/themes/custom-theme-template/login/webauthn-register.ftl
new file mode 100644
index 0000000000000000000000000000000000000000..84676daed62bf719b95ac897974502a964382f01
--- /dev/null
+++ b/themes/custom-theme-template/login/webauthn-register.ftl
@@ -0,0 +1,194 @@
+    <#import "template.ftl" as layout>
+    <#import "password-commons.ftl" as passwordCommons>
+
+    <@layout.registrationLayout; section>
+    <#if section = "title">
+        title
+    <#elseif section = "header">
+        <span class="${properties.kcWebAuthnKeyIcon}"></span>
+        ${kcSanitize(msg("webauthn-registration-title"))?no_esc}
+    <#elseif section = "form">
+
+        <form id="register" class="${properties.kcFormClass!}" action="${url.loginAction}" method="post">
+            <div class="${properties.kcFormGroupClass!}">
+                <input type="hidden" id="clientDataJSON" name="clientDataJSON"/>
+                <input type="hidden" id="attestationObject" name="attestationObject"/>
+                <input type="hidden" id="publicKeyCredentialId" name="publicKeyCredentialId"/>
+                <input type="hidden" id="authenticatorLabel" name="authenticatorLabel"/>
+                <input type="hidden" id="transports" name="transports"/>
+                <input type="hidden" id="error" name="error"/>
+                <@passwordCommons.logoutOtherSessions/>
+            </div>
+        </form>
+
+        <script type="text/javascript" src="${url.resourcesCommonPath}/node_modules/jquery/dist/jquery.min.js"></script>
+        <script type="text/javascript" src="${url.resourcesPath}/js/base64url.js"></script>
+        <script type="text/javascript">
+
+            function registerSecurityKey() {
+
+                // Check if WebAuthn is supported by this browser
+                if (!window.PublicKeyCredential) {
+                    $("#error").val("${msg("webauthn-unsupported-browser-text")?no_esc}");
+                    $("#register").submit();
+                    return;
+                }
+
+                // mandatory parameters
+                let challenge = "${challenge}";
+                let userid = "${userid}";
+                let username = "${username}";
+
+                let signatureAlgorithms =[<#list signatureAlgorithms as sigAlg>${sigAlg},</#list>]
+                let pubKeyCredParams = getPubKeyCredParams(signatureAlgorithms);
+
+                let rpEntityName = "${rpEntityName}";
+                let rp = {name: rpEntityName};
+
+                let publicKey = {
+                    challenge: base64url.decode(challenge, {loose: true}),
+                    rp: rp,
+                    user: {
+                        id: base64url.decode(userid, {loose: true}),
+                        name: username,
+                        displayName: username
+                    },
+                    pubKeyCredParams: pubKeyCredParams,
+                };
+
+                // optional parameters
+                let rpId = "${rpId}";
+                publicKey.rp.id = rpId;
+
+                let attestationConveyancePreference = "${attestationConveyancePreference}";
+                if (attestationConveyancePreference !== 'not specified') publicKey.attestation = attestationConveyancePreference;
+
+                let authenticatorSelection = {};
+                let isAuthenticatorSelectionSpecified = false;
+
+                let authenticatorAttachment = "${authenticatorAttachment}";
+                if (authenticatorAttachment !== 'not specified') {
+                    authenticatorSelection.authenticatorAttachment = authenticatorAttachment;
+                    isAuthenticatorSelectionSpecified = true;
+                }
+
+                let requireResidentKey = "${requireResidentKey}";
+                if (requireResidentKey !== 'not specified') {
+                    if (requireResidentKey === 'Yes')
+                        authenticatorSelection.requireResidentKey = true;
+                    else
+                        authenticatorSelection.requireResidentKey = false;
+                    isAuthenticatorSelectionSpecified = true;
+                }
+
+                let userVerificationRequirement = "${userVerificationRequirement}";
+                if (userVerificationRequirement !== 'not specified') {
+                    authenticatorSelection.userVerification = userVerificationRequirement;
+                    isAuthenticatorSelectionSpecified = true;
+                }
+
+                if (isAuthenticatorSelectionSpecified) publicKey.authenticatorSelection = authenticatorSelection;
+
+                let createTimeout = ${createTimeout};
+                if (createTimeout !== 0) publicKey.timeout = createTimeout * 1000;
+
+                let excludeCredentialIds = "${excludeCredentialIds}";
+                let excludeCredentials = getExcludeCredentials(excludeCredentialIds);
+                if (excludeCredentials.length > 0) publicKey.excludeCredentials = excludeCredentials;
+
+                navigator.credentials.create({publicKey})
+                    .then(function (result) {
+                        window.result = result;
+                        let clientDataJSON = result.response.clientDataJSON;
+                        let attestationObject = result.response.attestationObject;
+                        let publicKeyCredentialId = result.rawId;
+
+                        $("#clientDataJSON").val(base64url.encode(new Uint8Array(clientDataJSON), {pad: false}));
+                        $("#attestationObject").val(base64url.encode(new Uint8Array(attestationObject), {pad: false}));
+                        $("#publicKeyCredentialId").val(base64url.encode(new Uint8Array(publicKeyCredentialId), {pad: false}));
+
+                        if (typeof result.response.getTransports === "function") {
+                            let transports = result.response.getTransports();
+                            if (transports) {
+                                $("#transports").val(getTransportsAsString(transports));
+                            }
+                        } else {
+                            console.log("Your browser is not able to recognize supported transport media for the authenticator.");
+                        }
+
+                        let initLabel = "WebAuthn Authenticator (Default Label)";
+                        let labelResult = window.prompt("Please input your registered authenticator's label", initLabel);
+                        if (labelResult === null) labelResult = initLabel;
+                        $("#authenticatorLabel").val(labelResult);
+
+                        $("#register").submit();
+
+                    })
+                    .catch(function (err) {
+                        $("#error").val(err);
+                        $("#register").submit();
+
+                    });
+            }
+
+            function getPubKeyCredParams(signatureAlgorithmsList) {
+                let pubKeyCredParams = [];
+                if (signatureAlgorithmsList === []) {
+                    pubKeyCredParams.push({type: "public-key", alg: -7});
+                    return pubKeyCredParams;
+                }
+
+                for (let i = 0; i < signatureAlgorithmsList.length; i++) {
+                    pubKeyCredParams.push({
+                        type: "public-key",
+                        alg: signatureAlgorithmsList[i]
+                    });
+                }
+                return pubKeyCredParams;
+            }
+
+            function getExcludeCredentials(excludeCredentialIds) {
+                let excludeCredentials = [];
+                if (excludeCredentialIds === "") return excludeCredentials;
+
+                let excludeCredentialIdsList = excludeCredentialIds.split(',');
+
+                for (let i = 0; i < excludeCredentialIdsList.length; i++) {
+                    excludeCredentials.push({
+                        type: "public-key",
+                        id: base64url.decode(excludeCredentialIdsList[i],
+                        {loose: true})
+                    });
+                }
+                return excludeCredentials;
+            }
+
+            function getTransportsAsString(transportsList) {
+                if (transportsList === '' || transportsList.constructor !== Array) return "";
+
+                let transportsString = "";
+
+                for (let i = 0; i < transportsList.length; i++) {
+                    transportsString += transportsList[i] + ",";
+                }
+
+                return transportsString.slice(0, -1);
+            }
+        </script>
+
+        <input type="submit"
+               class="${properties.kcButtonClass!} ${properties.kcButtonPrimaryClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+               id="registerWebAuthn" value="${msg("doRegisterSecurityKey")}" onclick="registerSecurityKey()"/>
+
+        <#if !isSetRetry?has_content && isAppInitiatedAction?has_content>
+            <form action="${url.loginAction}" class="${properties.kcFormClass!}" id="kc-webauthn-settings-form"
+                  method="post">
+                <button type="submit"
+                        class="${properties.kcButtonClass!} ${properties.kcButtonDefaultClass!} ${properties.kcButtonBlockClass!} ${properties.kcButtonLargeClass!}"
+                        id="cancelWebAuthnAIA" name="cancel-aia" value="true">${msg("doCancel")}
+                </button>
+            </form>
+        </#if>
+
+    </#if>
+    </@layout.registrationLayout>