mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-16 17:23:24 +03:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
505bdcb8ba | ||
|
|
f103a54790 | ||
|
|
e1de593dcd | ||
|
|
45f42772b1 | ||
|
|
98152640b1 | ||
|
|
04e235e805 |
@@ -1,3 +1,9 @@
|
|||||||
|
## [](https://github.com/pocket-id/pocket-id/compare/v1.6.1...v) (2025-07-09)
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* ensure confirmation dialog shows on top of other components ([f103a54](https://github.com/pocket-id/pocket-id/commit/f103a547904070c5b192e519c8b5a8fed9d80e96))
|
||||||
|
* login failures on Postgres when IP is null ([#737](https://github.com/pocket-id/pocket-id/issues/737)) ([e1de593](https://github.com/pocket-id/pocket-id/commit/e1de593dcd30b7b04da3b003455134992b702595))
|
||||||
## [](https://github.com/pocket-id/pocket-id/compare/v1.5.0...v) (2025-07-06)
|
## [](https://github.com/pocket-id/pocket-id/compare/v1.5.0...v) (2025-07-06)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ func (m *RateLimitMiddleware) Add(limit rate.Limit, burst int) gin.HandlerFunc {
|
|||||||
|
|
||||||
// Skip rate limiting for localhost and test environment
|
// Skip rate limiting for localhost and test environment
|
||||||
// If the client ip is localhost the request comes from the frontend
|
// If the client ip is localhost the request comes from the frontend
|
||||||
if ip == "127.0.0.1" || ip == "::1" || common.EnvConfig.AppEnv == "test" {
|
if ip == "" || ip == "127.0.0.1" || ip == "::1" || common.EnvConfig.AppEnv == "test" {
|
||||||
c.Next()
|
c.Next()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,12 +70,17 @@ func (s *AuditLogService) CreateNewSignInWithEmail(ctx context.Context, ipAddres
|
|||||||
|
|
||||||
// Count the number of times the user has logged in from the same device
|
// Count the number of times the user has logged in from the same device
|
||||||
var count int64
|
var count int64
|
||||||
err := tx.
|
stmt := tx.
|
||||||
WithContext(ctx).
|
WithContext(ctx).
|
||||||
Model(&model.AuditLog{}).
|
Model(&model.AuditLog{}).
|
||||||
Where("user_id = ? AND ip_address = ? AND user_agent = ?", userID, ipAddress, userAgent).
|
Where("user_id = ? AND user_agent = ?", userID, ipAddress)
|
||||||
Count(&count).
|
if ipAddress == "" {
|
||||||
Error
|
// An empty IP address is stored as NULL in the database
|
||||||
|
stmt = stmt.Where("ip_address IS NULL")
|
||||||
|
} else {
|
||||||
|
stmt = stmt.Where("ip_address = ?", ipAddress)
|
||||||
|
}
|
||||||
|
err := stmt.Count(&count).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("Failed to count audit logs: %v", err)
|
log.Printf("Failed to count audit logs: %v", err)
|
||||||
return createdAuditLog
|
return createdAuditLog
|
||||||
|
|||||||
@@ -469,9 +469,7 @@ func (s *UserService) ExchangeOneTimeAccessToken(ctx context.Context, token stri
|
|||||||
return model.User{}, "", err
|
return model.User{}, "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
if ipAddress != "" && userAgent != "" {
|
s.auditLogService.Create(ctx, model.AuditLogEventOneTimeAccessTokenSignIn, ipAddress, userAgent, oneTimeAccessToken.User.ID, model.AuditLogData{}, tx)
|
||||||
s.auditLogService.Create(ctx, model.AuditLogEventOneTimeAccessTokenSignIn, ipAddress, userAgent, oneTimeAccessToken.User.ID, model.AuditLogData{}, tx)
|
|
||||||
}
|
|
||||||
|
|
||||||
err = tx.Commit().Error
|
err = tx.Commit().Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -37,7 +37,7 @@
|
|||||||
"generate_code": "Сгенерировать код",
|
"generate_code": "Сгенерировать код",
|
||||||
"name": "Имя",
|
"name": "Имя",
|
||||||
"browser_unsupported": "Браузер не поддерживается",
|
"browser_unsupported": "Браузер не поддерживается",
|
||||||
"this_browser_does_not_support_passkeys": "Этот браузер не поддерживает passkey. Пожалуйста, воспользуйтесь альтернативным способом входа.",
|
"this_browser_does_not_support_passkeys": "Этот браузер не поддерживает ключи доступа. Пожалуйста, воспользуйтесь альтернативным способом входа.",
|
||||||
"an_unknown_error_occurred": "Произошла неизвестная ошибка",
|
"an_unknown_error_occurred": "Произошла неизвестная ошибка",
|
||||||
"authentication_process_was_aborted": "Процесс аутентификации был прерван",
|
"authentication_process_was_aborted": "Процесс аутентификации был прерван",
|
||||||
"error_occurred_with_authenticator": "С аутентификатором произошла ошибка",
|
"error_occurred_with_authenticator": "С аутентификатором произошла ошибка",
|
||||||
@@ -107,11 +107,11 @@
|
|||||||
"passkey_missing": "Passkey отсутствует",
|
"passkey_missing": "Passkey отсутствует",
|
||||||
"please_provide_a_passkey_to_prevent_losing_access_to_your_account": "Пожалуйста, добавьте passkey, чтобы избежать утери доступа к вашей учетной записи.",
|
"please_provide_a_passkey_to_prevent_losing_access_to_your_account": "Пожалуйста, добавьте passkey, чтобы избежать утери доступа к вашей учетной записи.",
|
||||||
"single_passkey_configured": "Настроен один passkey",
|
"single_passkey_configured": "Настроен один passkey",
|
||||||
"it_is_recommended_to_add_more_than_one_passkey": "Рекомендуется добавить более одного passkey во избежание потери доступа к вашей учетной записи.",
|
"it_is_recommended_to_add_more_than_one_passkey": "Рекомендуется добавить более одного ключа доступа во избежание потери доступа к вашей учетной записи.",
|
||||||
"account_details": "Детали учетной записи",
|
"account_details": "Детали учетной записи",
|
||||||
"passkeys": "Passkeys",
|
"passkeys": "Ключи доступа",
|
||||||
"manage_your_passkeys_that_you_can_use_to_authenticate_yourself": "Управляйте passkeys, которые вы можете использовать для аутентификации себя.",
|
"manage_your_passkeys_that_you_can_use_to_authenticate_yourself": "Управляйте ключами доступа, которые вы можете использовать для аутентификации.",
|
||||||
"add_passkey": "Добавить Passkey",
|
"add_passkey": "Добавить ключ",
|
||||||
"create_a_one_time_login_code_to_sign_in_from_a_different_device_without_a_passkey": "Создайте одноразовый код входа, чтобы войти с другого устройства без passkey.",
|
"create_a_one_time_login_code_to_sign_in_from_a_different_device_without_a_passkey": "Создайте одноразовый код входа, чтобы войти с другого устройства без passkey.",
|
||||||
"create": "Создать",
|
"create": "Создать",
|
||||||
"first_name": "Имя",
|
"first_name": "Имя",
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"email_login_notification": "Уведомление о логине по электронной почте",
|
"email_login_notification": "Уведомление о логине по электронной почте",
|
||||||
"send_an_email_to_the_user_when_they_log_in_from_a_new_device": "Отправлять пользователю письмо при входе с нового устройства.",
|
"send_an_email_to_the_user_when_they_log_in_from_a_new_device": "Отправлять пользователю письмо при входе с нового устройства.",
|
||||||
"emai_login_code_requested_by_user": "Код входа по электронной почте, запрошенный пользователем",
|
"emai_login_code_requested_by_user": "Код входа по электронной почте, запрошенный пользователем",
|
||||||
"allow_users_to_sign_in_with_a_login_code_sent_to_their_email": "Позволяет пользователям обходить вход через passkey, запросив код входа, отправляемый на их электронную почту. Это значительно снижает безопасность так как любой человек, имеющий доступ к электронной почте пользователя, может получить доступ.",
|
"allow_users_to_sign_in_with_a_login_code_sent_to_their_email": "Позволяет пользователям обходить вход через ключи доступа, запросив код входа, отправляемый на их электронную почту. Это значительно снижает безопасность, так как любой человек, имеющий доступ к электронной почте пользователя, может получить доступ.",
|
||||||
"email_login_code_from_admin": "Код входа по электронной почте от администратора",
|
"email_login_code_from_admin": "Код входа по электронной почте от администратора",
|
||||||
"allows_an_admin_to_send_a_login_code_to_the_user": "Позволяет администратору отправлять код входа пользователю по электронной почте.",
|
"allows_an_admin_to_send_a_login_code_to_the_user": "Позволяет администратору отправлять код входа пользователю по электронной почте.",
|
||||||
"send_test_email": "Отправить тестовое письмо",
|
"send_test_email": "Отправить тестовое письмо",
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
"user_details_firstname_lastname": "Данные пользователя {firstName} {lastName}",
|
"user_details_firstname_lastname": "Данные пользователя {firstName} {lastName}",
|
||||||
"manage_which_groups_this_user_belongs_to": "Управление группами, к которым принадлежит этот пользователь.",
|
"manage_which_groups_this_user_belongs_to": "Управление группами, к которым принадлежит этот пользователь.",
|
||||||
"custom_claims": "Пользовательские claims",
|
"custom_claims": "Пользовательские claims",
|
||||||
"custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user": "Пользовательские claims — это пары ключ-значение, которые могут использоваться для хранения дополнительной информации о пользователе. Эти пары будут включены в ID Token при запросе scope 'profile'.",
|
"custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user": "Пользовательские claims — это пары ключ-значение, которые могут использоваться для хранения дополнительной информации о пользователе. Эти пары будут включены в ID Token при запросе scope \"profile\".",
|
||||||
"user_group_created_successfully": "Группа пользователей успешно создана",
|
"user_group_created_successfully": "Группа пользователей успешно создана",
|
||||||
"create_user_group": "Создать группу пользователей",
|
"create_user_group": "Создать группу пользователей",
|
||||||
"create_a_new_group_that_can_be_assigned_to_users": "Создайте новую группу, которая может быть назначена пользователям.",
|
"create_a_new_group_that_can_be_assigned_to_users": "Создайте новую группу, которая может быть назначена пользователям.",
|
||||||
@@ -252,7 +252,7 @@
|
|||||||
"manage_user_groups": "Управление группами пользователей",
|
"manage_user_groups": "Управление группами пользователей",
|
||||||
"friendly_name": "Удобное имя",
|
"friendly_name": "Удобное имя",
|
||||||
"name_that_will_be_displayed_in_the_ui": "Название, которое будет отображаться в интерфейсе",
|
"name_that_will_be_displayed_in_the_ui": "Название, которое будет отображаться в интерфейсе",
|
||||||
"name_that_will_be_in_the_groups_claim": "Название, которое будет в 'groups' claim",
|
"name_that_will_be_in_the_groups_claim": "Название, которое будет в claim \"groups\"",
|
||||||
"delete_name": "Удалить {name}",
|
"delete_name": "Удалить {name}",
|
||||||
"are_you_sure_you_want_to_delete_this_user_group": "Вы уверены, что хотите удалить эту группу пользователей?",
|
"are_you_sure_you_want_to_delete_this_user_group": "Вы уверены, что хотите удалить эту группу пользователей?",
|
||||||
"user_group_deleted_successfully": "Группа пользователей успешно удалена",
|
"user_group_deleted_successfully": "Группа пользователей успешно удалена",
|
||||||
@@ -261,7 +261,7 @@
|
|||||||
"users_updated_successfully": "Пользователи успешно обновлены",
|
"users_updated_successfully": "Пользователи успешно обновлены",
|
||||||
"user_group_details_name": "Группа пользователей {name}",
|
"user_group_details_name": "Группа пользователей {name}",
|
||||||
"assign_users_to_this_group": "Назначить пользователей этой группе.",
|
"assign_users_to_this_group": "Назначить пользователей этой группе.",
|
||||||
"custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user_prioritized": "Пользовательские claims — это пары ключ-значение, которые могут использоваться для хранения дополнительной информации о пользователе. Эти пары будут включены в ID Token при запросе scope 'profile'. Пользовательские claims, определенные для пользователя, в случае конфликта будут приоритизированы.",
|
"custom_claims_are_key_value_pairs_that_can_be_used_to_store_additional_information_about_a_user_prioritized": "Пользовательские claims — это пары ключ-значение, которые могут использоваться для хранения дополнительной информации о пользователе. Эти пары будут включены в ID Token при запросе scope \"profile\". Пользовательские claims, определенные для пользователя, в случае конфликта будут приоритизированы.",
|
||||||
"oidc_client_created_successfully": "OIDC клиент успешно создан",
|
"oidc_client_created_successfully": "OIDC клиент успешно создан",
|
||||||
"create_oidc_client": "Создать OIDC клиент",
|
"create_oidc_client": "Создать OIDC клиент",
|
||||||
"add_a_new_oidc_client_to_appname": "Добавить новый OIDC клиент в {appName}.",
|
"add_a_new_oidc_client_to_appname": "Добавить новый OIDC клиент в {appName}.",
|
||||||
@@ -289,7 +289,7 @@
|
|||||||
"logout_url": "Logout URL",
|
"logout_url": "Logout URL",
|
||||||
"certificate_url": "Certificate URL",
|
"certificate_url": "Certificate URL",
|
||||||
"enabled": "Включен",
|
"enabled": "Включен",
|
||||||
"disabled": "Выключен",
|
"disabled": "Отключено",
|
||||||
"oidc_client_updated_successfully": "OIDC клиент успешно обновлен",
|
"oidc_client_updated_successfully": "OIDC клиент успешно обновлен",
|
||||||
"create_new_client_secret": "Создать новый клиентский секрет",
|
"create_new_client_secret": "Создать новый клиентский секрет",
|
||||||
"are_you_sure_you_want_to_create_a_new_client_secret": "Вы уверены, что хотите создать новый клиентский секрет? Старый будет аннулирован.",
|
"are_you_sure_you_want_to_create_a_new_client_secret": "Вы уверены, что хотите создать новый клиентский секрет? Старый будет аннулирован.",
|
||||||
@@ -312,8 +312,8 @@
|
|||||||
"reset": "Сбросить",
|
"reset": "Сбросить",
|
||||||
"reset_to_default": "Сбросить по умолчанию",
|
"reset_to_default": "Сбросить по умолчанию",
|
||||||
"profile_picture_has_been_reset": "Изображение профиля было сброшено. Обновление может занять несколько минут.",
|
"profile_picture_has_been_reset": "Изображение профиля было сброшено. Обновление может занять несколько минут.",
|
||||||
"select_the_language_you_want_to_use": "Выбери язык, на котором хочешь работать. Имей в виду, что часть текста может быть переведена автоматически и может содержать неточности.",
|
"select_the_language_you_want_to_use": "Выберите язык, который вы хотите использовать. Обратите внимание на то, что часть текста может быть переведена автоматически и содержать неточности.",
|
||||||
"contribute_to_translation": "Если ты нашел ошибку, приглашаем тебя помочь с переводом на <link href='https://crowdin.com/project/pocket-id'>Crowdin</link>.",
|
"contribute_to_translation": "Если вы нашли ошибку, приглашаем вас помочь с переводом на <link href='https://crowdin.com/project/pocket-id'>Crowdin</link>.",
|
||||||
"personal": "Персональный",
|
"personal": "Персональный",
|
||||||
"global": "Глобальный",
|
"global": "Глобальный",
|
||||||
"all_users": "Все пользователи",
|
"all_users": "Все пользователи",
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
"do_you_want_to_sign_out_of_pocketid_with_the_account": "您確定要使用帳號 <b>{username}</b> 登出 {appName} 嗎?",
|
"do_you_want_to_sign_out_of_pocketid_with_the_account": "您確定要使用帳號 <b>{username}</b> 登出 {appName} 嗎?",
|
||||||
"sign_in_to_appname": "登入 {appName}",
|
"sign_in_to_appname": "登入 {appName}",
|
||||||
"please_try_to_sign_in_again": "請嘗試重新登入。",
|
"please_try_to_sign_in_again": "請嘗試重新登入。",
|
||||||
"authenticate_with_passkey_to_access_account": "使用您的密碼進行身份驗證,以存取您的帳戶。",
|
"authenticate_with_passkey_to_access_account": "使用您的密碼金鑰進行身份驗證以存取您的帳號。",
|
||||||
"authenticate": "驗證",
|
"authenticate": "驗證",
|
||||||
"please_try_again": "請再試一次。",
|
"please_try_again": "請再試一次。",
|
||||||
"continue": "繼續",
|
"continue": "繼續",
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
"settings": "設定",
|
"settings": "設定",
|
||||||
"update_pocket_id": "更新 Pocket ID",
|
"update_pocket_id": "更新 Pocket ID",
|
||||||
"powered_by": "技術支援",
|
"powered_by": "技術支援",
|
||||||
"see_your_account_activities_from_the_last_3_months": "查看您過去 3 個月的帳戶活動。",
|
"see_your_account_activities_from_the_last_3_months": "查看您過去 3 個月的帳號活動。",
|
||||||
"time": "時間",
|
"time": "時間",
|
||||||
"event": "事件",
|
"event": "事件",
|
||||||
"approximate_location": "概略位置",
|
"approximate_location": "概略位置",
|
||||||
@@ -103,12 +103,12 @@
|
|||||||
"unknown": "未知",
|
"unknown": "未知",
|
||||||
"account_details_updated_successfully": "帳號資訊更新成功",
|
"account_details_updated_successfully": "帳號資訊更新成功",
|
||||||
"profile_picture_updated_successfully": "個人資料圖片更新成功。 這可能會花幾分鐘更新。",
|
"profile_picture_updated_successfully": "個人資料圖片更新成功。 這可能會花幾分鐘更新。",
|
||||||
"account_settings": "帳戶設定",
|
"account_settings": "帳號設定",
|
||||||
"passkey_missing": "沒有密碼金鑰",
|
"passkey_missing": "沒有密碼金鑰",
|
||||||
"please_provide_a_passkey_to_prevent_losing_access_to_your_account": "請新增密碼金鑰以避免日後無法存取您的帳戶。",
|
"please_provide_a_passkey_to_prevent_losing_access_to_your_account": "請新增密碼金鑰以避免日後無法存取您的帳號。",
|
||||||
"single_passkey_configured": "已設定一組密碼金鑰",
|
"single_passkey_configured": "已設定一組密碼金鑰",
|
||||||
"it_is_recommended_to_add_more_than_one_passkey": "建議您新增多組密碼金鑰,以避免日後無法存取帳戶。",
|
"it_is_recommended_to_add_more_than_one_passkey": "建議您新增多組密碼金鑰,以避免日後無法存取帳號。",
|
||||||
"account_details": "帳戶詳細資料",
|
"account_details": "帳號詳細資料",
|
||||||
"passkeys": "密碼金鑰",
|
"passkeys": "密碼金鑰",
|
||||||
"manage_your_passkeys_that_you_can_use_to_authenticate_yourself": "管理可用於驗證身分的密碼金鑰。",
|
"manage_your_passkeys_that_you_can_use_to_authenticate_yourself": "管理可用於驗證身分的密碼金鑰。",
|
||||||
"add_passkey": "新增密碼金鑰",
|
"add_passkey": "新增密碼金鑰",
|
||||||
@@ -178,7 +178,7 @@
|
|||||||
"email_login_notification": "電子郵件登入通知",
|
"email_login_notification": "電子郵件登入通知",
|
||||||
"send_an_email_to_the_user_when_they_log_in_from_a_new_device": "使用者從新裝置登入時寄送電子郵件通知。",
|
"send_an_email_to_the_user_when_they_log_in_from_a_new_device": "使用者從新裝置登入時寄送電子郵件通知。",
|
||||||
"emai_login_code_requested_by_user": "使用者請求電子郵件登入代碼",
|
"emai_login_code_requested_by_user": "使用者請求電子郵件登入代碼",
|
||||||
"allow_users_to_sign_in_with_a_login_code_sent_to_their_email": "允許使用者透過要求將登入代碼傳送到他們的電子郵件,繞過密碼匙。這會大幅降低安全性,因為任何可以存取使用者電子郵件的人都可以進入。",
|
"allow_users_to_sign_in_with_a_login_code_sent_to_their_email": "允許使用者透過要求將登入代碼傳送到他們的電子郵件以繞過密碼金鑰。這會大幅降低安全性,因為任何可以存取使用者電子郵件的人都可以獲得存取權限。",
|
||||||
"email_login_code_from_admin": "來自管理員的使用者登入代碼",
|
"email_login_code_from_admin": "來自管理員的使用者登入代碼",
|
||||||
"allows_an_admin_to_send_a_login_code_to_the_user": "允許管理員透過電子郵件向使用者發送登入代碼。",
|
"allows_an_admin_to_send_a_login_code_to_the_user": "允許管理員透過電子郵件向使用者發送登入代碼。",
|
||||||
"send_test_email": "發送測試郵件",
|
"send_test_email": "發送測試郵件",
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
"application_name": "應用程式名稱",
|
"application_name": "應用程式名稱",
|
||||||
"session_duration": "登入階段有效時長",
|
"session_duration": "登入階段有效時長",
|
||||||
"the_duration_of_a_session_in_minutes_before_the_user_has_to_sign_in_again": "使用者需重新登入前的階段時長(以分鐘為單位)。",
|
"the_duration_of_a_session_in_minutes_before_the_user_has_to_sign_in_again": "使用者需重新登入前的階段時長(以分鐘為單位)。",
|
||||||
"enable_self_account_editing": "允許使用者自行編輯帳戶資訊",
|
"enable_self_account_editing": "允許使用者自行編輯帳號資訊",
|
||||||
"whether_the_users_should_be_able_to_edit_their_own_account_details": "是否允許使用者編輯自己的帳號資料。",
|
"whether_the_users_should_be_able_to_edit_their_own_account_details": "是否允許使用者編輯自己的帳號資料。",
|
||||||
"emails_verified": "已驗證的電子郵件",
|
"emails_verified": "已驗證的電子郵件",
|
||||||
"whether_the_users_email_should_be_marked_as_verified_for_the_oidc_clients": "是否應將使用者的電子郵件標記為已驗證,以供 OIDC 客戶端使用。",
|
"whether_the_users_email_should_be_marked_as_verified_for_the_oidc_clients": "是否應將使用者的電子郵件標記為已驗證,以供 OIDC 客戶端使用。",
|
||||||
@@ -308,7 +308,7 @@
|
|||||||
"background_image": "背景圖片",
|
"background_image": "背景圖片",
|
||||||
"language": "語言",
|
"language": "語言",
|
||||||
"reset_profile_picture_question": "重設個人資料圖片?",
|
"reset_profile_picture_question": "重設個人資料圖片?",
|
||||||
"this_will_remove_the_uploaded_image_and_reset_the_profile_picture_to_default": "這將會移除上傳的圖片,並將個人資料圖片重設為預設值。要繼續嗎?",
|
"this_will_remove_the_uploaded_image_and_reset_the_profile_picture_to_default": "這將會移除上傳的圖片,並將個人資料圖片重設為預設值。您確定要繼續嗎?",
|
||||||
"reset": "重設",
|
"reset": "重設",
|
||||||
"reset_to_default": "重設至預設值",
|
"reset_to_default": "重設至預設值",
|
||||||
"profile_picture_has_been_reset": "個人資料圖片已經重設。 這可能會花幾分鐘更新。",
|
"profile_picture_has_been_reset": "個人資料圖片已經重設。 這可能會花幾分鐘更新。",
|
||||||
@@ -326,8 +326,8 @@
|
|||||||
"client_authorization": "客戶端授權",
|
"client_authorization": "客戶端授權",
|
||||||
"new_client_authorization": "新客戶端授權",
|
"new_client_authorization": "新客戶端授權",
|
||||||
"disable_animations": "停用動畫",
|
"disable_animations": "停用動畫",
|
||||||
"turn_off_ui_animations": "關閉整個使用者介面的動畫。",
|
"turn_off_ui_animations": "關閉整個 UI 的動畫。",
|
||||||
"user_disabled": "帳戶已停用",
|
"user_disabled": "帳號已停用",
|
||||||
"disabled_users_cannot_log_in_or_use_services": "已停用的使用者不能登入或使用服務。",
|
"disabled_users_cannot_log_in_or_use_services": "已停用的使用者不能登入或使用服務。",
|
||||||
"user_disabled_successfully": "使用者已成功停用。",
|
"user_disabled_successfully": "使用者已成功停用。",
|
||||||
"user_enabled_successfully": "使用者已成功啟用。",
|
"user_enabled_successfully": "使用者已成功啟用。",
|
||||||
@@ -348,7 +348,7 @@
|
|||||||
"enter_code_displayed_in_previous_step": "請輸入上一步顯示的代碼。",
|
"enter_code_displayed_in_previous_step": "請輸入上一步顯示的代碼。",
|
||||||
"authorize": "授權",
|
"authorize": "授權",
|
||||||
"federated_client_credentials": "聯邦身分",
|
"federated_client_credentials": "聯邦身分",
|
||||||
"federated_client_credentials_description": "使用聯邦身分,您可以透過由第三方授權機構簽發的 JWT 權杖來驗證 OIDC 客戶端。",
|
"federated_client_credentials_description": "使用聯邦身分,您可以透過由第三方授權機構簽發的 JWT 令牌來驗證 OIDC 客戶端。",
|
||||||
"add_federated_client_credential": "增加聯邦身分",
|
"add_federated_client_credential": "增加聯邦身分",
|
||||||
"add_another_federated_client_credential": "新增另一組聯邦身分",
|
"add_another_federated_client_credential": "新增另一組聯邦身分",
|
||||||
"oidc_allowed_group_count": "允許的群組數量",
|
"oidc_allowed_group_count": "允許的群組數量",
|
||||||
@@ -361,7 +361,7 @@
|
|||||||
"access_token": "存取令牌",
|
"access_token": "存取令牌",
|
||||||
"userinfo": "使用者資訊",
|
"userinfo": "使用者資訊",
|
||||||
"id_token_payload": "ID 令牌有效負載",
|
"id_token_payload": "ID 令牌有效負載",
|
||||||
"access_token_payload": "存取權杖有效負載",
|
"access_token_payload": "存取令牌有效負載",
|
||||||
"userinfo_endpoint_response": "使用者資訊端點回應",
|
"userinfo_endpoint_response": "使用者資訊端點回應",
|
||||||
"copy": "複製",
|
"copy": "複製",
|
||||||
"no_preview_data_available": "無預覽資料",
|
"no_preview_data_available": "無預覽資料",
|
||||||
@@ -370,54 +370,54 @@
|
|||||||
"preview_for_user": "預覽 {name} ({email})",
|
"preview_for_user": "預覽 {name} ({email})",
|
||||||
"preview_the_oidc_data_that_would_be_sent_for_this_user": "預覽將為此使用者傳送的 OIDC 資料",
|
"preview_the_oidc_data_that_would_be_sent_for_this_user": "預覽將為此使用者傳送的 OIDC 資料",
|
||||||
"show": "顯示",
|
"show": "顯示",
|
||||||
"select_an_option": "選擇選項",
|
"select_an_option": "選擇一個選項",
|
||||||
"select_user": "選擇使用者",
|
"select_user": "選擇使用者",
|
||||||
"error": "錯誤",
|
"error": "錯誤",
|
||||||
"select_an_accent_color_to_customize_the_appearance_of_pocket_id": "選擇重點顏色,自訂 Pocket ID 的外觀。",
|
"select_an_accent_color_to_customize_the_appearance_of_pocket_id": "選擇強調色以自訂 Pocket ID 的外觀。",
|
||||||
"accent_color": "重點顏色",
|
"accent_color": "強調色",
|
||||||
"custom_accent_color": "自訂顏色",
|
"custom_accent_color": "自訂強調色",
|
||||||
"custom_accent_color_description": "使用有效的 CSS 顏色格式 (例如:hex、rgb、hsl) 輸入自訂顏色。",
|
"custom_accent_color_description": "使用有效的 CSS 顏色格式(例如:hex、rgb、hsl)輸入自訂顏色。",
|
||||||
"color_value": "顏色值",
|
"color_value": "顏色值",
|
||||||
"apply": "申請",
|
"apply": "套用",
|
||||||
"signup_token": "註冊代碼",
|
"signup_token": "註冊令牌",
|
||||||
"create_a_signup_token_to_allow_new_user_registration": "建立註冊標記,允許新使用者註冊。",
|
"create_a_signup_token_to_allow_new_user_registration": "建立註冊令牌,允許新使用者註冊。",
|
||||||
"usage_limit": "使用限制",
|
"usage_limit": "使用次數限制",
|
||||||
"number_of_times_token_can_be_used": "註冊標記可使用的次數。",
|
"number_of_times_token_can_be_used": "註冊令牌可使用的次數。",
|
||||||
"expires": "到期",
|
"expires": "到期",
|
||||||
"signup": "註冊",
|
"signup": "註冊",
|
||||||
"signup_requires_valid_token": "建立帳戶需要有效的註冊標記",
|
"signup_requires_valid_token": "建立帳號需要有效的註冊令牌",
|
||||||
"validating_signup_token": "驗證註冊標記",
|
"validating_signup_token": "驗證註冊標記",
|
||||||
"go_to_login": "前往登入",
|
"go_to_login": "前往登入",
|
||||||
"signup_to_appname": "註冊 {appName}",
|
"signup_to_appname": "註冊 {appName}",
|
||||||
"create_your_account_to_get_started": "建立您的帳戶即可開始使用。",
|
"create_your_account_to_get_started": "建立您的帳號即可開始使用。",
|
||||||
"initial_account_creation_description": "請先建立您的帳戶。您稍後可以設定密碼。",
|
"initial_account_creation_description": "請先建立您的帳號以開始。您稍後可以設定密碼金鑰。",
|
||||||
"setup_your_passkey": "設定您的密碼",
|
"setup_your_passkey": "設定您的密碼金鑰",
|
||||||
"create_a_passkey_to_securely_access_your_account": "建立密碼以安全存取您的帳戶。這將是您登入的主要方式。",
|
"create_a_passkey_to_securely_access_your_account": "建立密碼金鑰以安全存取您的帳號。這將是您登入的主要方式。",
|
||||||
"skip_for_now": "暫時跳過",
|
"skip_for_now": "暫時跳過",
|
||||||
"account_created": "建立帳戶",
|
"account_created": "帳號已建立",
|
||||||
"enable_user_signups": "啟用使用者註冊",
|
"enable_user_signups": "啟用使用者註冊",
|
||||||
"enable_user_signups_description": "是否要啟用使用者註冊功能。",
|
"enable_user_signups_description": "是否要啟用使用者註冊功能。",
|
||||||
"user_signups_are_disabled": "使用者註冊目前已停用",
|
"user_signups_are_disabled": "使用者註冊目前已停用",
|
||||||
"create_signup_token": "建立註冊代用幣",
|
"create_signup_token": "建立註冊令牌",
|
||||||
"view_active_signup_tokens": "檢視有效的註冊代碼",
|
"view_active_signup_tokens": "檢視有效的註冊令牌",
|
||||||
"manage_signup_tokens": "管理註冊代碼",
|
"manage_signup_tokens": "管理註冊令牌",
|
||||||
"view_and_manage_active_signup_tokens": "檢視並管理有效的註冊代用幣。",
|
"view_and_manage_active_signup_tokens": "檢視並管理有效的註冊令牌。",
|
||||||
"signup_token_deleted_successfully": "註冊標記已成功刪除。",
|
"signup_token_deleted_successfully": "註冊令牌已成功刪除。",
|
||||||
"expired": "已過期",
|
"expired": "已過期",
|
||||||
"used_up": "已用完",
|
"used_up": "已用完",
|
||||||
"active": "活躍",
|
"active": "活躍",
|
||||||
"usage": "使用方式",
|
"usage": "使用方式",
|
||||||
"created": "創建",
|
"created": "已建立",
|
||||||
"token": "代幣",
|
"token": "令牌",
|
||||||
"loading": "載入中",
|
"loading": "載入中",
|
||||||
"delete_signup_token": "刪除註冊令牌",
|
"delete_signup_token": "刪除註冊令牌",
|
||||||
"are_you_sure_you_want_to_delete_this_signup_token": "您確定要刪除這個註冊標記嗎?此動作無法撤銷。",
|
"are_you_sure_you_want_to_delete_this_signup_token": "您確定要刪除這個註冊令牌嗎?此動作無法撤銷。",
|
||||||
"signup_disabled_description": "使用者註冊完全停用。只有管理員可以建立新的使用者帳號。",
|
"signup_disabled_description": "使用者註冊已完全停用。只有管理員可以建立新的使用者帳號。",
|
||||||
"signup_with_token": "使用代碼註冊",
|
"signup_with_token": "使用註冊令牌註冊",
|
||||||
"signup_with_token_description": "使用者只能使用管理員建立的有效登入標記註冊。",
|
"signup_with_token_description": "使用者只能使用管理員建立的有效登入令牌註冊。",
|
||||||
"signup_open": "開放報名",
|
"signup_open": "開放報名",
|
||||||
"signup_open_description": "任何人都可以不受限制地建立新帳戶。",
|
"signup_open_description": "任何人都可以不受限制地建立新帳號。",
|
||||||
"of": "的",
|
"of": "的",
|
||||||
"skip_passkey_setup": "跳過密碼設定",
|
"skip_passkey_setup": "跳過密碼金鑰設定",
|
||||||
"skip_passkey_setup_description": "我們強烈建議您設定通行鑰匙,因為如果沒有通行鑰匙,當會話到期時,您就會被鎖住。"
|
"skip_passkey_setup_description": "我們強烈建議您設定密碼金鑰,因為如果沒有密碼金鑰,當工作階段到期時,您就會被鎖住。"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "pocket-id-frontend",
|
"name": "pocket-id-frontend",
|
||||||
"version": "1.6.1",
|
"version": "1.6.2",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<AlertDialog.Root bind:open={$confirmDialogStore.open}>
|
<AlertDialog.Root bind:open={$confirmDialogStore.open}>
|
||||||
<AlertDialog.Content>
|
<AlertDialog.Content class="z-9999">
|
||||||
<AlertDialog.Header>
|
<AlertDialog.Header>
|
||||||
<AlertDialog.Title>{$confirmDialogStore.title}</AlertDialog.Title>
|
<AlertDialog.Title>{$confirmDialogStore.title}</AlertDialog.Title>
|
||||||
<AlertDialog.Description>
|
<AlertDialog.Description>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
'pt-BR': 'Português brasileiro',
|
'pt-BR': 'Português brasileiro',
|
||||||
ru: 'Русский',
|
ru: 'Русский',
|
||||||
'zh-CN': '简体中文',
|
'zh-CN': '简体中文',
|
||||||
'zh-TW': '繁體中文(臺灣)'
|
'zh-TW': '繁體中文(臺灣)'
|
||||||
};
|
};
|
||||||
|
|
||||||
async function updateLocale(locale: Locale) {
|
async function updateLocale(locale: Locale) {
|
||||||
|
|||||||
Reference in New Issue
Block a user