@keycloakify/keycloak-account-ui 260200.1.3 → 260305.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/KcAccountUiLoader.d.ts +33 -0
  2. package/KcAccountUiLoader.js +32 -10
  3. package/KcAccountUiLoader.js.map +1 -1
  4. package/keycloak-theme/account/KcPage.tsx +1 -1
  5. package/keycloak-theme/account/account-security/AccountRow.tsx +7 -11
  6. package/keycloak-theme/account/account-security/SigningIn.tsx +3 -3
  7. package/keycloak-theme/account/api/methods.ts +0 -25
  8. package/keycloak-theme/account/i18n/messages_ca.properties +8 -7
  9. package/keycloak-theme/account/i18n/messages_de.properties +1 -0
  10. package/keycloak-theme/account/i18n/messages_el.properties +1 -1
  11. package/keycloak-theme/account/i18n/messages_en.properties +19 -0
  12. package/keycloak-theme/account/i18n/messages_es.properties +1 -0
  13. package/keycloak-theme/account/i18n/messages_fr.properties +5 -4
  14. package/keycloak-theme/account/i18n/messages_it.properties +1 -0
  15. package/keycloak-theme/account/i18n/messages_ja.properties +72 -71
  16. package/keycloak-theme/account/i18n/messages_ka.properties +1 -0
  17. package/keycloak-theme/account/i18n/messages_ky.properties +226 -0
  18. package/keycloak-theme/account/i18n/messages_pt_BR.properties +154 -28
  19. package/keycloak-theme/account/i18n/messages_ru.properties +74 -14
  20. package/keycloak-theme/account/personal-info/PersonalInfo.tsx +15 -10
  21. package/keycloak-theme/account/root/Root.tsx +18 -4
  22. package/package.json +6 -6
  23. package/src/KcAccountUiLoader.tsx +86 -11
  24. package/src/zKcContextLike.ts +2 -1
  25. package/tsconfig.tsbuildinfo +1 -1
  26. package/zKcContextLike.js +2 -1
  27. package/zKcContextLike.js.map +1 -1
@@ -14,30 +14,30 @@ signOutAllDevices=Finalizar Sessão em Todos os Dispositivos
14
14
  backTo=Voltar para {{app}}
15
15
  applicationType=Tipo de aplicação
16
16
  myResources=Meus Recursos
17
- linkedAccountsIntroMessage=Gerenciar acessos por contas de outras aplicações.
18
- password=Senha
17
+ linkedAccountsIntroMessage=Gerencie logins por meio de contas de terceiros.
18
+ password=Minha senha
19
19
  setUpNew=Configurar {{name}}
20
20
  lastAccessedOn=Último acesso em
21
21
  resourceAlreadyShared=O recurso já foi compartilhado com este usuário.
22
22
  permissions=Permissões
23
23
  accountUpdatedMessage=Sua conta foi atualizada.
24
- credentialCreatedAt=Criada em
24
+ credentialCreatedAt=<0>Criado</0> {{date}}.
25
25
  password-help-text=Entre inserindo a sua senha.
26
26
  deleteAccount=Apagar Conta
27
27
  infoMessage=Ao clicar em 'Remover Acesso', você irá remover as permissões concedidas a esta aplicação. Ela não poderá mais utilizar as suas informações.
28
28
  add=Adicionar
29
29
  unknownOperatingSystem=Sistema Operacional Desconhecido
30
30
  edit=Editar
31
- otp-display-name=App Autenticador
31
+ otp-display-name=Aplicativo Autenticador
32
32
  ipAddress=Endereço IP
33
33
  resourceName=Nome do Recurso
34
- unlinkedEmpty=Nenhum Provedor Não-Conectado
34
+ unlinkedEmpty=Nenhum provedor vinculado
35
35
  linkedEmpty=Nenhum Provedor Conectado
36
36
  done=Pronto
37
37
  basic-authentication=Autenticação Básica
38
38
  socialLogin=Login Social
39
39
  notInUse=Não utilizado
40
- unShareAllConfirm=Tem certeza de que quer remover todos os compartilhamentos?
40
+ unShareAllConfirm=Tem certeza de que deseja remover todos os compartilhamentos?
41
41
  firstName=Primeiro nome
42
42
  two-factor=Autenticação de Dois Fatores
43
43
  name=Nome
@@ -46,7 +46,7 @@ unknownUser=Anônimo
46
46
  offlineAccess=Acesso Offline
47
47
  removeModalMessage=Isto irá remover a permissão atual de acesso concedido para {{name}}. Você precisará repetir o processo de concessão se for utilizar o app novamente.
48
48
  lastName=Sobrenome
49
- invalidEmailMessage=E-mail inválido.
49
+ invalidEmailMessage='{{0}}': Email inválido.
50
50
  password-display-name=Senha
51
51
  expires=Expira em
52
52
  notSetUp={{name}} não está configurada.
@@ -57,14 +57,14 @@ link=Conectar Conta
57
57
  description=Descrição
58
58
  update=Atualizar
59
59
  signedInDevices=Dispositivos autenticados
60
- missingPasswordMessage=Por favor, informe a senha.
61
- otp-help-text=Insira o código de verificação do app autenticador.
60
+ missingPasswordMessage='{{0}}': Por favor, informe a senha.
61
+ otp-help-text=Insira o código de verificação do aplicativo autenticador.
62
62
  currentSession=Sessão Atual
63
- missingEmailMessage=Por favor, informe o e-mail.
64
- applicationsIntroMessage=Acompanhe e gerencie as permissões de app para acesso à sua conta
65
- missingLastNameMessage=Por favor, informe o sobrenome.
63
+ missingEmailMessage='{{0}}': Por favor, informe o email.
64
+ applicationsIntroMessage=Veja os aplicativos aos quais sua conta tem acesso
65
+ missingLastNameMessage='{{0}}': Por favor, informe o sobrenome.
66
66
  linkedLoginProviders=Provedores de Acesso Conectados
67
- missingFirstNameMessage=Por favor, informe o primeiro nome.
67
+ missingFirstNameMessage='{{0}}': Por favor, informe o primeiro nome.
68
68
  signedOutSession=Deslogado {{browser}}/{{os}}
69
69
  inUse=Em uso
70
70
  client=Cliente
@@ -72,31 +72,157 @@ share=Compartilhar
72
72
  systemDefined=Definido pelo Sistema
73
73
  close=Fechar
74
74
  internalApp=Interna
75
- email=E-mail
76
- accessGrantedOn=Acesso concedido em
77
- signOutWarning=Finalizar todas as sessões?
78
- unShareSuccess=O recurso foi descompartilhado com sucesso.
79
- signOutAllDevicesWarning=Esta ação irá finalizar a sessão de todos os dispositivos logados na sua conta, incluindo o dispositivo que está sendo utilizado atualmente.
80
- signingIn=Entrando na Conta
81
- permissionRequests=Pedidos de Acesso
75
+ email=Email
76
+ accessGrantedOn=Acesso concedido em:
77
+ signOutWarning=Finalizar sessão?
78
+ unShareSuccess=Recurso descompartilhado com sucesso.
79
+ signOutAllDevicesWarning=Esta ação desconectará todos os dispositivos que fizeram login na sua conta, incluindo o dispositivo atual que você está usando.
80
+ signingIn=Entrando
81
+ permissionRequests=Solicitações de permissão
82
82
  shareSuccess=O recurso foi compartilhado com sucesso.
83
83
  stopUsingCred=Para de usar {{name}}?
84
84
  thirdPartyApp=De Terceiros
85
- missingUsernameMessage=Por favor, especifique o nome de usuário.
85
+ missingUsernameMessage='{{0}}': Por favor, especifique o nome de usuário.
86
86
  fullName={{givenName}} {{familyName}}
87
87
  resources=Recursos
88
- started=Início em
89
- resourceIntroMessage=Compartilhe seus recursos com membros de equipe
88
+ started=Iniciado
89
+ resourceIntroMessage=Compartilhe seus recursos com membros da equipe
90
90
  unLink=Desconectar Conta
91
- requestor=Requerente
92
- updateSuccess=O recurso foi atualizado com sucesso.
91
+ requestor=Solicitante
92
+ updateSuccess=Recurso atualizado com sucesso.
93
93
  application=Aplicativo
94
94
  unShare=Descompartilhar tudo
95
- unlinkedLoginProviders=Provedores de Acesso Não-Conectados
96
- applicationDetails=Detalhes da Aplicação
97
- successRemovedMessage={{userLabel}} removida com sucesso.
95
+ unlinkedLoginProviders=Provedores de login não vinculados
96
+ applicationDetails=Detalhes da Aplicação {{clientId}}
97
+ successRemovedMessage={{userLabel}} removido com sucesso.
98
98
  deleteAccountWarning=Esta ação é irreversível. Todos os seus dados serão apagados permanentemente e não poderão ser recuperados.
99
99
  removeAccess=Remover Acesso
100
100
  user=Usuário
101
101
  applications=Aplicativos
102
102
  username=Nome de usuário
103
+ removeConsentSuccess=Consentimento removido com sucesso
104
+ noGroupsText=Você não está participando de nenhum grupo
105
+ required=Obrigatório
106
+ path=Caminho
107
+ deviceActivity=Atividade do dispositivo
108
+ error-username-invalid-character='{{0}}' contém caractere inválido.
109
+ usernamePlaceholder=Nome do usuário ou e-mail
110
+ scopesHelp=Os escopos associados com este recurso.
111
+ deny=Negar
112
+ selectALocale=Selecione um local
113
+ signOut=Sair
114
+ accept=Aceitar
115
+ updateEmail=Atualizar email
116
+ status=Status
117
+ error-invalid-blank=Por favor, especifique um valor de '{{0}}'.
118
+ profileScopeConsentText=Perfil de usuário
119
+ phoneScopeConsentText=Número de telefone
120
+ emailScopeConsentText=Email
121
+ addressScopeConsentText=Endereço
122
+ offlineAccessScopeConsentText=Acesso Offline
123
+ termsAndConditionsDeclined=Você precisa aceitar os termos e condições para continuar
124
+ directMembership=Associação direta
125
+ error-invalid-length-too-short='{{0}}' deve ter o tamanho mínimo de {{1}}.
126
+ linkedAccounts=Contas vinculadas
127
+ refresh=Atualizar
128
+ defaultLocale=Selecione...
129
+ error-invalid-email=Endereço de email inválido.
130
+ error-invalid-value='{{0}}' tem valor inválido.
131
+ choose=Selecione...
132
+ delete=Excluir
133
+ updateCredAriaLabel=Atualizar credencial
134
+ resourceSharedWith_one=O recurso está compartilhado com <0>{{username}}</0>
135
+ resourceSharedWith_zero=Esse recurso não é compartilhado.
136
+ save=Salvar
137
+ error-user-attribute-required=Por favor, informe '{{0}}'.
138
+ scopeTypeHelp=Escopos de cliente, que serão adicionados como escopos padrão a cada cliente criado
139
+ error-empty=Por favor, especifique um valor de '{{0}}'.
140
+ error-invalid-uri-fragment='{{0}}' é um fragmento da URL inválido.
141
+ removeConsentError=Não foi possível remover o consentimento devido a: {{error}}
142
+ groupsListHeader=Cabeçalho da lista de grupos
143
+ privacyPolicy=Política de privacidade
144
+ avatar=Avatar
145
+ confirm=Confirmar
146
+ selectOne=Selecione uma opção
147
+ personalInfoDescription=Gerencie suas informações básicas
148
+ signingInDescription=Configure as formas de login.
149
+ personalInfo=Informações pessoais
150
+ flowTypeHelp=Que tipo de formulário é esse
151
+ accountSecurity=Segurança da conta
152
+ groupDescriptionLabel=Visualizar os grupos aos quais você está associado
153
+ manageAccount=Gerenciar conta
154
+ error-invalid-length-too-long='{{0}}' precisa ter um tamanho máximo de {{2}}.
155
+ shareError=Não foi possível compartilhar o recurso devido a: {{error}}
156
+ logo=Logo
157
+ permissionRequest=Solicitações de permissão - {{name}}
158
+ somethingWentWrong=Alguma coisa deu errado
159
+ tryAgain=Tente novamente
160
+ rolesScope=Se não houver mapeamento de escopo de papel definido, cada usuário terá permissão para usar este escopo de cliente. Se houver mapeamentos de escopo de papel definidos, o usuário deve ser membro de pelo menos um dos papéis.
161
+ unShareError=Não foi possível desfazer o compartilhamento do recurso devido a: {{error}}
162
+ clientTypeHelp=O tipo deste recurso. Pode ser usado para agrupar diferentes instâncias de recurso com o mesmo tipo.
163
+ noGroups=Nenhum grupo
164
+ error-invalid-number='{{0}}' é um número inválido.
165
+ shareTheResource=Compartilhar o recurso - {{nome}}
166
+ groupsListColumnsNames=Nomes das colunas da lista de grupos
167
+ error-user-attribute-read-only=O campo {{0}} é somente leitura.
168
+ error-invalid-date='{{0}}' é uma data inválida.
169
+ general=Geral
170
+ unLinkError=Não foi possível desvincular devido a: {{error}}
171
+ errorSignOutMessage=Não foi possível finalizar a sessão: {{error}}
172
+ hasAccessTo=Tem acesso a
173
+ updateError=Não foi possível atualizar o recurso devido a: {{error}}
174
+ editTheResource=Editar o recurso - {{name}}
175
+ aliasHelp=Nome da configuração
176
+ groups=Grupos
177
+ errorRemovedMessage=Não foi possível remover {{userLabel}} devido a: {{error}}
178
+ termsOfService=Termos de serviço
179
+ jumpToSection=Ir para a seção
180
+ linkError=Não foi possível vincular devido a: {{error}}
181
+ shareWith=Compartilhar com
182
+ error-pattern-no-match='{{0}}' não corresponde ao formato exigido.
183
+ resourceSharedWith_other=Recurso compartilhado com <0>{{username}}\\</0> e <1>{{other}}\\</1> outros usuários
184
+ error-person-name-invalid-character='{{0}}' contém caractere inválido.
185
+ unLinkSuccess=Conta desvinculada com sucesso
186
+ sharedWithMe=Compartilhados Comigo
187
+ webauthn-passwordless-display-name=Chave de Segurança
188
+ webauthn-help-text=Use sua chave de segurança para fazer login.
189
+ webauthn-passwordless-help-text=Use sua chave de segurança para fazer login sem senha.
190
+ passwordless=Sem senha
191
+ error-invalid-multivalued-size=O atributo {{0}} deve ter no mínimo {{1}} e no máximo {{2}} valor(es).
192
+ recovery-authn-code=Meus códigos de autenticação de recuperação
193
+ recovery-authn-codes-display-name=Códigos de autenticação de recuperação
194
+ recovery-authn-codes-help-text=Estes códigos podem ser usados para recuperar seu acesso caso seus outros métodos de 2FA não estejam disponíveis.
195
+ recovery-codes-number-used={{0}} códigos de recuperação usados
196
+ recovery-codes-number-remaining={{0}} códigos de recuperação restantes
197
+ recovery-codes-generate-new-codes=Gere novos códigos para garantir acesso à sua conta
198
+ oid4vci=Credenciais Verificáveis
199
+ verifiableCredentialsTitle=Credenciais Verificáveis
200
+ verifiableCredentialsDescription=Selecione a credencial para importar para sua carteira.
201
+ verifiableCredentialsIssuerAlert=Não foi possível obter as informações do emissor.
202
+ verifiableCredentialsConfigAlert=Não foi possível obter a configuração de credencial.
203
+ verifiableCredentialsOfferAlert=Não foi possível obter uma oferta.
204
+ verifiableCredentialsSelectionDefault=Selecione a configuração de credencial.
205
+ organizations=Organizações
206
+ emptyUserOrganizations=Nenhuma organização
207
+ searchOrganization=Buscar por organização
208
+ organizationList=Lista de organizações
209
+ domains=Domínios
210
+ error-number-out-of-range-too-small='{{0}}' precisa ter um valor mínimo de {{1}}.
211
+ scopeNameHelp=Nome do escopo de cliente. Deve ser único no realm. O nome não deve conter espaços, pois é usado como valor do parâmetro de escopo
212
+ createFlowHelp=Você pode criar um fluxo de nível superior dentro deste formulário
213
+ error-invalid-length='{{0}}' precisa ter um tamanho entre {{1}} e {{2}} caracteres.
214
+ webauthn-display-name=Chave de Segurança
215
+ clientDescriptionHelp=Especifica a descrição do cliente. Por exemplo 'Meu cliente para TimeSheets'. Também aceita chaves para valores localizados. Por exemplo: ${meu_cliente_descricao}
216
+ error-number-out-of-range-too-big='{{0}}' precisa ter um valor máximo de {{2}}.
217
+ addMultivaluedLabel=Adicionar {{fieldLabel}}
218
+ error-number-out-of-range='{{0}}' deve ser um número entre {{1}} e {{2}}.
219
+ shareUser=Adicionar usuários para compartilhar seu recurso
220
+ samlRoleListScopeConsentText=Meus Papéis
221
+ organizationDescription=Visualizar as organizações às quais você se juntou
222
+ error-invalid-uri-scheme='{{0}}' tem um esquema de URL inválido.
223
+ scopeDescriptionHelp=Descrição do escopo de cliente
224
+ rolesScopeConsentText=Papéis de usuário
225
+ somethingWentWrongDescription=Desculpe, ocorreu um erro inesperado.
226
+ error-invalid-uri='{{0}}' é uma URL inválida.
227
+ emptyUserOrganizationsInstructions=Você ainda não se juntou a nenhuma organização.
228
+ accountUpdatedError=Não foi possível atualizar a conta devido a erros de validação
@@ -22,6 +22,7 @@ credentialCreatedAt=<0>Создан</0> {{date}}.
22
22
  error-username-invalid-character='{{0}}' содержит недопустимый символ.
23
23
  usernamePlaceholder=Имя пользователя или email
24
24
  infoMessage=Нажав кнопку Удалить доступ, вы удалите предоставленные разрешения для этого приложения. Это приложение больше не будет использовать вашу информацию.
25
+ scopesHelp=Области, связанные с этим ресурсом.
25
26
  unknownOperatingSystem=Неизвестная операционная система
26
27
  deny=Запрещено
27
28
  edit=Редактировать
@@ -34,37 +35,47 @@ accept=Подтвердить
34
35
  error-invalid-length-too-short='{{0}}' должна иметь минимальную длину {{1}}.
35
36
  resourceSharedWith_one=Ресурс является общим для <0>{{username}}</0>
36
37
  error-number-out-of-range-too-big='{{0}}' должно иметь максимальное значение {{2}}.
38
+ updateEmail=Обновить e-mail
37
39
  two-factor=Двухфакторная аутентификация
38
40
  resourceSharedWith_zero=Этот ресурс не является общим.
39
41
  signedInDevicesExplanation=Выполните выход с незнакомых устройств.
42
+ addMultivaluedLabel=Добавить {{fieldLabel}}
40
43
  status=Статус
41
44
  error-number-out-of-range-too-small='{{0}}' должно иметь минимальное значение {{1}}.
45
+ invalidEmailMessage='{{0}}': Неверный адрес электронной почты.
42
46
  lastName=Фамилия
43
47
  removeModalMessage=Это приведет к удалению предоставленного в данный момент разрешения доступа для {{name}}. Вам нужно будет снова предоставить доступ, если вы хотите использовать это приложение.
44
48
  clients=Клиенты
49
+ createFlowHelp=Вы можете создать сценарий верхнего уровня в этом
45
50
  filterByName=Фильтровать по названию...
46
51
  refreshPage=Обновить страницу
47
52
  save=Сохранить
48
53
  error-user-attribute-required=Пожалуйста, уточните '{{0}}'.
49
54
  currentSession=Текущая сессия
55
+ clientDescriptionHelp=Указывает описание клиента. Например, "Мой клиент для расписаний". Поддерживает также ключи для локализованных значений. Например: ${my_client_description}
56
+ scopeTypeHelp=Клиентские области, которые будут добавлены в качестве областей по умолчанию для каждого созданного клиента
50
57
  error-empty=Пожалуйста, укажите значение '{{0}}'.
51
58
  error-invalid-uri-fragment='{{0}}' является недопустимым фрагментом URL-адреса.
52
59
  error-invalid-blank=Пожалуйста, укажите значение '{{0}}'.
60
+ missingFirstNameMessage='{{0}}': Укажите имя.
53
61
  signedOutSession=Сессия завершена {{browser}}/{{os}}
54
62
  share=Делиться
55
63
  close=Закрыть
56
64
  email=E-mail
57
65
  signOutWarning=Завершить сессию?
58
- removeConsentError=Не удалось удалить согласия из-за\: {{error}}
66
+ removeConsentError=Не удалось удалить согласия из-за: {{error}}
59
67
  signOutAllDevicesWarning=Это действие приведет к выходу из системы всех устройств, которые вошли в вашу учетную запись, включая текущее устройство, которое вы используете.
60
68
  unShareSuccess=Ресурс успешно удален из общего доступа.
61
69
  signingIn=Вход
62
70
  stopUsingCred=Остановить использование {{name}}?
71
+ groupsListHeader=Заголовок списка групп
63
72
  error-number-out-of-range='{{0}}' должно быть число в диапазоне от {{1}} до {{2}}.
64
73
  privacyPolicy=Политика конфиденциальности
65
74
  thirdPartyApp=Внешний
66
75
  started=Начата
67
76
  avatar=Аватар
77
+ scopeDescriptionHelp=Описание сферы деятельности клиента
78
+ confirm=Подтвердить
68
79
  updateSuccess=Ресурс успешно обновлен.
69
80
  selectOne=Выберите опцию
70
81
  unShare=Не делитесь всем
@@ -72,10 +83,11 @@ linkedAccounts=Связанные учетные записи
72
83
  personalInfoDescription=Управление данными о себе
73
84
  removeAccess=Удалить доступ
74
85
  signingInDescription=Настройте способы входа в систему.
75
- somethingWentWrongDescription=Извините, произошла непредвиденная ошибка.
76
86
  personalInfo=Личная информация
77
87
  removeCred=Удалить {{name}}
78
88
  signOutAllDevices=Выход на всех устройствах
89
+ scopeNameHelp=Имя клиентской области. Должно быть уникальным в realm. Имя не должно содержать пробелов, так как оно используется как значение параметра области
90
+ flowTypeHelp=Какой это сценарий
79
91
  error-invalid-email=Неверный адрес электронной почты.
80
92
  myResources=Мои ресурсы
81
93
  linkedAccountsIntroMessage=Управляйте входами в систему через сторонние учетные записи.
@@ -83,9 +95,9 @@ accountSecurity=Безопасность
83
95
  groupDescriptionLabel=Просмотр групп, в которых вы состоите
84
96
  manageAccount=Управление учетной записью
85
97
  resourceAlreadyShared=Ресурс уже является общим для этого пользователя.
86
- accountUpdatedMessage=Ваша учетная запись была обновлена.
87
98
  error-invalid-length-too-long='{{0}}' должна иметь максимальную длину {{2}}.
88
- shareError=Не удалось предоставить общий доступ к ресурсу из-за\: {{error}}
99
+ accountUpdatedMessage=Ваша учетная запись была обновлена.
100
+ shareError=Не удалось предоставить общий доступ к ресурсу из-за: {{error}}
89
101
  logo=Logo
90
102
  password-help-text=Вход с использованием ввода пароля.
91
103
  deleteAccount=Удалить аккаунт
@@ -93,18 +105,22 @@ permissionRequest=Запросы на разрешение - {{name}}
93
105
  add=Добавить
94
106
  error-invalid-value='{{0}}' имеет недопустимое значение.
95
107
  somethingWentWrong=Что-то пошло не так
96
- unShareError=Не удалось отключить общий доступ к ресурсу из-за\: {{error}}
108
+ somethingWentWrongDescription=Извините, произошла непредвиденная ошибка.
109
+ tryAgain=Попробовать снова
110
+ rolesScope=Если сопоставление области действия ролей не определено, каждому пользователю разрешено использовать эту клиентскую область действия. Если сопоставления области действия ролей определены, пользователь должен быть членом хотя бы одной из ролей.
111
+ unShareError=Не удалось отключить общий доступ к ресурсу из-за: {{error}}
97
112
  ipAddress=IP адрес
98
- tryAgain=Пробовать снова
99
113
  resourceName=Имя ресурса
100
114
  unlinkedEmpty=Нет несвязанных поставщиков
101
115
  done=Выполнено
102
116
  basic-authentication=Базовая аутентификация
103
117
  socialLogin=Вход в социальную сеть
104
118
  notInUse=Не используется
119
+ unShareAllConfirm=Вы уверены, что хотите отменить все общие доступы?
105
120
  firstName=Имя
106
121
  name=Имя
107
- unknownUser=Anonymous
122
+ clientTypeHelp=Тип этого ресурса. Может использоваться для группировки различных экземпляров ресурсов с одинаковым типом.
123
+ unknownUser=Анонимный
108
124
  offlineAccess=Offline доступ
109
125
  password-display-name=Пароль
110
126
  expires=Истекает
@@ -118,14 +134,20 @@ update=Обновить
118
134
  choose=Выбрать...
119
135
  signedInDevices=Выполнен вход на устройствах
120
136
  delete=Удалить
137
+ missingPasswordMessage='{{0}}': Укажите пароль.
121
138
  otp-help-text=Ввод проверочного кода из приложения аутентификатора.
139
+ groupsListColumnsNames=Имена колонок списка групп
122
140
  error-invalid-uri-scheme='{{0}}' имеет недопустимую схему URL-адресов.
141
+ error-user-attribute-read-only=Поле {{0}} доступно только для чтения.
142
+ general=Общий
123
143
  error-invalid-date='{{0}}' неверная дата.
144
+ missingEmailMessage='{{0}}': Укажите адрес электронной почты.
124
145
  accountUpdatedError=Не удалось обновить учетную запись из-за ошибок проверки
125
- unLinkError=Не удалось отключить связь из-за\: {{error}}
146
+ unLinkError=Не удалось отключить связь из-за: {{error}}
126
147
  applicationsIntroMessage=Отслеживайте разрешения ваших приложений на доступ к вашей учетной записи и управляйте ими
127
148
  error-invalid-length='{{0}}' должен иметь длину от {{1}} до {{2}}.
128
- errorSignOutMessage=Не удалось выйти из системы\: {{error}}
149
+ missingLastNameMessage='{{0}}': Укажите фамилию.
150
+ errorSignOutMessage=Не удалось выйти из системы: {{error}}
129
151
  linkedLoginProviders=Связанные поставщики идентификации
130
152
  inUse=Используется
131
153
  client=Клиент
@@ -133,28 +155,30 @@ error-invalid-uri='{{0}}' является недопустимым URL-адре
133
155
  systemDefined=Определенная система
134
156
  hasAccessTo=Имеет доступ к
135
157
  internalApp=Внутренний
136
- updateError=Не удалось обновить ресурс из-за\: {{error}}
137
- accessGrantedOn=Доступ, предоставленный на\:
158
+ updateError=Не удалось обновить ресурс из-за: {{error}}
159
+ accessGrantedOn=Доступ, предоставленный на:
138
160
  editTheResource=Редактировать ресурс - {{name}}
139
161
  permissionRequests=Запросы на разрешение
140
162
  shareSuccess=Ресурсу успешно предоставлен общий доступ.
163
+ missingUsernameMessage='{{0}}': Укажите имя пользователя.
164
+ aliasHelp=Название конфигурации
141
165
  fullName={{givenName}} {{familyName}}
142
166
  groups=Группы
143
167
  resources=Ресурсы
144
168
  resourceIntroMessage=Делитесь своими ресурсами с членами команды
145
169
  unLink=Отсоединить учетную запись
146
- errorRemovedMessage=Не удалось удалить {{userLabel}} из-за\: {{error}}
170
+ errorRemovedMessage=Не удалось удалить {{userLabel}} из-за: {{error}}
147
171
  termsOfService=Условия обслуживания
172
+ jumpToSection=Перейти к разделу
148
173
  linkError=Не удалось установить связь из-за {{error}}
149
174
  requestor=Запрашивающий
150
- shareWith=Делитесь с
175
+ shareWith=Поделиться с
151
176
  updateCredAriaLabel=Обновить учетные данные
152
177
  error-pattern-no-match='{{0}}' не соответствует требуемому формату.
153
178
  application=Приложения
154
179
  unlinkedLoginProviders=Несвязанные поставщики идентификации
155
180
  applicationDetails=Детали приложения
156
181
  successRemovedMessage={{userLabel}} был удалён.
157
- middleName=Отчество
158
182
  deleteAccountWarning=Это необратимо. Все ваши данные будут безвозвратно уничтожены.
159
183
  resourceSharedWith_other=Ресурс является общим для <0>{{username}}</0> и <1>{{other}}</1> других пользователей
160
184
  error-person-name-invalid-character='{{0}}' содержит недопустимый символ.
@@ -164,3 +188,39 @@ unLinkSuccess=Учетная запись успешно отсоединена
164
188
  applications=Приложения
165
189
  sharedWithMe=Поделился со мной
166
190
  username=Имя пользователя
191
+ webauthn-display-name=Ключ доступа
192
+ webauthn-help-text=Для входа используйте свой ключ доступа.
193
+ webauthn-passwordless-display-name=Ключ доступа
194
+ webauthn-passwordless-help-text=Используйте свой ключ доступа для входа без пароля.
195
+ passwordless=Без пароля
196
+ error-invalid-multivalued-size=Атрибут {{0}} должен иметь не менее {{1}} и не более {{2}} значений.
197
+ recovery-authn-code=Мои коды аутентификации восстановления
198
+ recovery-authn-codes-display-name=Восстановление кодов аутентификации
199
+ recovery-authn-codes-help-text=Эти коды можно использовать для восстановления доступа в случае, если другие средства двухфакторной аутентификации недоступны.
200
+ recovery-codes-number-used={{0}} использовано кодов восстановления
201
+ recovery-codes-number-remaining={{0}} оставшихся кодов восстановления
202
+ recovery-codes-generate-new-codes=Сгенерируйте новые коды, чтобы обеспечить доступ к вашей учетной записи
203
+ oid4vci=Проверяемые учетные данные
204
+ verifiableCredentialsTitle=Проверяемые учетные данные
205
+ verifiableCredentialsDescription=Выберите учетные данные для импорта в ваш кошелек.
206
+ verifiableCredentialsIssuerAlert=Не удалось получить информацию об эмитенте.
207
+ verifiableCredentialsConfigAlert=Не удалось получить конфигурацию учетных данных.
208
+ verifiableCredentialsOfferAlert=Не удалось получить предложение.
209
+ verifiableCredentialsSelectionDefault=Выберите конфигурацию учетных данных.
210
+ profileScopeConsentText=Профиль пользователя
211
+ emailScopeConsentText=Адрес электронной почты
212
+ addressScopeConsentText=Адрес
213
+ phoneScopeConsentText=Номер телефона
214
+ offlineAccessScopeConsentText=Оффлайн доступ
215
+ samlRoleListScopeConsentText=Мои роли (SAML)
216
+ rolesScopeConsentText=Роли пользователей
217
+ organizations=Организации
218
+ organizationDescription=Просмотр организаций, к которым вы присоединились
219
+ emptyUserOrganizations=Нет организаций
220
+ emptyUserOrganizationsInstructions=Вы пока не вступили ни в одну организацию.
221
+ searchOrganization=Поиск организации
222
+ organizationList=Список организаций
223
+ domains=Домены
224
+ refresh=Обновить
225
+ termsAndConditionsDeclined=Чтобы продолжить, вам необходимо принять Условия и Положения
226
+ defaultLocale=Выбрать...
@@ -75,13 +75,14 @@ export const PersonalInfo = () => {
75
75
  );
76
76
  await savePersonalInfo(context, { ...user, attributes });
77
77
  const locale = attributes["locale"]?.toString();
78
- if (locale)
79
- i18n.changeLanguage(locale, (error) => {
78
+ if (locale) {
79
+ await i18n.changeLanguage(locale, (error) => {
80
80
  if (error) {
81
81
  console.warn("Error(s) loading locale", locale, error);
82
82
  }
83
83
  });
84
- context.keycloak.updateToken();
84
+ }
85
+ await context.keycloak.updateToken();
85
86
  addAlert(t("accountUpdatedMessage"));
86
87
  } catch (error) {
87
88
  addAlert(t("accountUpdatedError"), AlertVariant.danger);
@@ -122,11 +123,15 @@ export const PersonalInfo = () => {
122
123
  ((key: unknown, params) =>
123
124
  t(key as TFuncKey, params as any)) as TFunction
124
125
  }
125
- renderer={(attribute) =>
126
- attribute.name === "email" &&
127
- updateEmailFeatureEnabled &&
128
- updateEmailActionEnabled &&
129
- (!isRegistrationEmailAsUsername || isEditUserNameAllowed) ? (
126
+ renderer={(attribute) => {
127
+ const annotations = attribute.annotations
128
+ ? attribute.annotations
129
+ : {};
130
+ return attribute.name === "email" &&
131
+ updateEmailFeatureEnabled &&
132
+ updateEmailActionEnabled &&
133
+ annotations["kc.required.action.supported"] &&
134
+ (!isRegistrationEmailAsUsername || isEditUserNameAllowed) ? (
130
135
  <Button
131
136
  id="update-email-btn"
132
137
  variant="link"
@@ -138,8 +143,8 @@ export const PersonalInfo = () => {
138
143
  >
139
144
  {t("updateEmail")}
140
145
  </Button>
141
- ) : undefined
142
- }
146
+ ) : undefined;
147
+ }}
143
148
  />
144
149
  {!allFieldsReadOnly() && (
145
150
  <ActionGroup>
@@ -2,7 +2,11 @@
2
2
 
3
3
  // @ts-nocheck
4
4
 
5
- import { ErrorPage, useEnvironment } from "../../shared/keycloak-ui-shared";
5
+ import {
6
+ ErrorPage,
7
+ useEnvironment,
8
+ KeycloakContext,
9
+ } from "../../shared/keycloak-ui-shared";
6
10
  import { Page, Spinner } from "../../shared/@patternfly/react-core";
7
11
  import { Suspense, useState } from "react";
8
12
  import {
@@ -18,12 +22,21 @@ import { Header } from "./Header";
18
22
  import { MenuItem, PageNav } from "./PageNav";
19
23
  import { routes } from "../routes";
20
24
 
21
- function mapRoutes(content: MenuItem[]): RouteObject[] {
25
+ function mapRoutes(
26
+ context: KeycloakContext<Environment>,
27
+ content: MenuItem[],
28
+ ): RouteObject[] {
22
29
  return content
23
30
  .map((item) => {
24
31
  if ("children" in item) {
25
- return mapRoutes(item.children);
32
+ return mapRoutes(context, item.children);
33
+ }
34
+
35
+ // Do not add route disabled via feature flags
36
+ if (item.isVisible && !context.environment.features[item.isVisible]) {
37
+ return null;
26
38
  }
39
+
27
40
  return {
28
41
  ...item,
29
42
  element:
@@ -32,6 +45,7 @@ function mapRoutes(content: MenuItem[]): RouteObject[] {
32
45
  : undefined,
33
46
  };
34
47
  })
48
+ .filter((item) => !!item)
35
49
  .flat();
36
50
  }
37
51
 
@@ -53,7 +67,7 @@ export const Root = () => {
53
67
  </Page>
54
68
  ),
55
69
  errorElement: <ErrorPage />,
56
- children: mapRoutes(content),
70
+ children: mapRoutes(context, content),
57
71
  },
58
72
  ]);
59
73
  },
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@keycloakify/keycloak-account-ui",
3
3
  "main": "index.js",
4
4
  "types": "index.d.ts",
5
- "version": "260200.1.3",
5
+ "version": "260305.0.0",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "git://github.com/keycloakify/keycloak-account-ui.git"
@@ -23,15 +23,15 @@
23
23
  "@patternfly/react-core": "^5.4.14",
24
24
  "@patternfly/react-icons": "^5.4.2",
25
25
  "@patternfly/react-table": "^5.4.16",
26
- "i18next": "^24.2.3",
26
+ "i18next": "^25.2.1",
27
27
  "i18next-fetch-backend": "^6.0.0",
28
28
  "keycloak-js": "^26.2.0",
29
29
  "lodash-es": "^4.17.21",
30
30
  "react": "^18.3.1",
31
- "react-hook-form": "^7.54.2",
32
- "react-i18next": "^15.4.1",
33
- "react-router-dom": "^6.30.0",
34
- "@keycloakify/keycloak-ui-shared": "~260200.0.0",
31
+ "react-hook-form": "^7.59.0",
32
+ "react-i18next": "^15.5.3",
33
+ "react-router-dom": "^6.30.1",
34
+ "@keycloakify/keycloak-ui-shared": "~260305.0.0",
35
35
  "@types/lodash-es": "^4.17.12",
36
36
  "@types/react": "^18.3.18"
37
37
  }