From 782d95b4a3338d9717403c1eff578f95bfc0831e Mon Sep 17 00:00:00 2001 From: Jens L Date: Fri, 28 Jul 2023 14:25:56 +0200 Subject: [PATCH] web: app icons v2 (#6410) * fix more icons stuff Signed-off-by: Jens Langhammer * refactor app icon into separate component Signed-off-by: Jens Langhammer * update locale Signed-off-by: Jens Langhammer * make app icon work correctly in admin list and app view page Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- locale/en/LC_MESSAGES/django.po | 30 +++---- .../admin/applications/ApplicationListPage.ts | 34 +------- .../admin/applications/ApplicationViewPage.ts | 8 +- web/src/elements/Expand.ts | 12 ++- web/src/elements/PageHeader.ts | 13 ++- web/src/user/LibraryApplication/AppIcon.ts | 80 +++++++++++++++++++ .../index.ts} | 42 +--------- web/xliff/de.xlf | 24 +++--- web/xliff/en.xlf | 24 +++--- web/xliff/es.xlf | 24 +++--- web/xliff/fr_FR.xlf | 24 +++--- web/xliff/pl.xlf | 24 +++--- web/xliff/pseudo-LOCALE.xlf | 24 +++--- web/xliff/tr.xlf | 24 +++--- web/xliff/zh-Hans.xlf | 73 +++++++++-------- web/xliff/zh-Hant.xlf | 24 +++--- web/xliff/zh_TW.xlf | 24 +++--- 17 files changed, 301 insertions(+), 207 deletions(-) create mode 100644 web/src/user/LibraryApplication/AppIcon.ts rename web/src/user/{LibraryApplication.ts => LibraryApplication/index.ts} (69%) diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 1f3fe8b5b..b449f8e10 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-07-21 13:04+0000\n" +"POT-Creation-Date: 2023-07-28 11:50+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -427,7 +427,7 @@ msgstr "" msgid "Webhook Mappings" msgstr "" -#: authentik/events/monitored_tasks.py:198 +#: authentik/events/monitored_tasks.py:205 msgid "Task has not been run yet." msgstr "" @@ -585,65 +585,65 @@ msgstr "" msgid "Invalid kubeconfig" msgstr "" -#: authentik/outposts/models.py:121 +#: authentik/outposts/models.py:122 msgid "" "If enabled, use the local connection. Required Docker socket/Kubernetes " "Integration" msgstr "" -#: authentik/outposts/models.py:151 +#: authentik/outposts/models.py:152 msgid "Outpost Service-Connection" msgstr "" -#: authentik/outposts/models.py:152 +#: authentik/outposts/models.py:153 msgid "Outpost Service-Connections" msgstr "" -#: authentik/outposts/models.py:160 +#: authentik/outposts/models.py:161 msgid "" "Can be in the format of 'unix://' when connecting to a local docker " "daemon, or 'https://:2376' when connecting to a remote system." msgstr "" -#: authentik/outposts/models.py:172 +#: authentik/outposts/models.py:173 msgid "" "CA which the endpoint's Certificate is verified against. Can be left empty " "for no validation." msgstr "" -#: authentik/outposts/models.py:184 +#: authentik/outposts/models.py:185 msgid "" "Certificate/Key used for authentication. Can be left empty for no " "authentication." msgstr "" -#: authentik/outposts/models.py:202 +#: authentik/outposts/models.py:203 msgid "Docker Service-Connection" msgstr "" -#: authentik/outposts/models.py:203 +#: authentik/outposts/models.py:204 msgid "Docker Service-Connections" msgstr "" -#: authentik/outposts/models.py:211 +#: authentik/outposts/models.py:212 msgid "" "Paste your kubeconfig here. authentik will automatically use the currently " "selected context." msgstr "" -#: authentik/outposts/models.py:217 +#: authentik/outposts/models.py:218 msgid "Verify SSL Certificates of the Kubernetes API endpoint" msgstr "" -#: authentik/outposts/models.py:234 +#: authentik/outposts/models.py:235 msgid "Kubernetes Service-Connection" msgstr "" -#: authentik/outposts/models.py:235 +#: authentik/outposts/models.py:236 msgid "Kubernetes Service-Connections" msgstr "" -#: authentik/outposts/models.py:251 +#: authentik/outposts/models.py:252 msgid "" "Select Service-Connection authentik should use to manage this outpost. Leave " "empty if authentik should not handle the deployment." diff --git a/web/src/admin/applications/ApplicationListPage.ts b/web/src/admin/applications/ApplicationListPage.ts index 5987297fa..adb2424d4 100644 --- a/web/src/admin/applications/ApplicationListPage.ts +++ b/web/src/admin/applications/ApplicationListPage.ts @@ -1,5 +1,6 @@ import "@goauthentik/admin/applications/ApplicationForm"; import "@goauthentik/admin/applications/wizard/ApplicationWizard"; +import { PFSize } from "@goauthentik/app/elements/Spinner"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; import MDApplication from "@goauthentik/docs/core/applications.md"; @@ -11,13 +12,12 @@ import { getURLParam } from "@goauthentik/elements/router/RouteMatch"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; import { TablePage } from "@goauthentik/elements/table/TablePage"; +import "@goauthentik/user/LibraryApplication/AppIcon"; import { msg } from "@lit/localize"; import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; -import { ifDefined } from "lit/directives/if-defined.js"; -import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; import { Application, CoreApi } from "@goauthentik/api"; @@ -56,13 +56,8 @@ export class ApplicationListPage extends TablePage { static get styles(): CSSResult[] { return super.styles.concat( - PFAvatar, PFCard, css` - :host { - --icon-height: 2rem; - --icon-border: 0.25rem; - } /* Fix alignment issues with images in tables */ .pf-c-table tbody > tr > * { vertical-align: middle; @@ -76,14 +71,6 @@ export class ApplicationListPage extends TablePage { .pf-c-sidebar.pf-m-gutter > .pf-c-sidebar__main > * + * { margin-left: calc(var(--pf-c-sidebar__main--child--MarginLeft) / 2); } - .icon { - font-size: var(--icon-height); - color: var(--ak-global--Color--100); - padding: var(--icon-border); - max-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); - line-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); - filter: drop-shadow(5px 5px 5px rgba(128, 128, 128, 0.25)); - } `, ); } @@ -137,24 +124,9 @@ export class ApplicationListPage extends TablePage { `; } - renderIcon(item: Application): TemplateResult { - if (item?.metaIcon) { - if (item.metaIcon.startsWith("fa://")) { - const icon = item.metaIcon.replaceAll("fa://", ""); - return html``; - } - return html`${msg(`; - } - return html`${item?.name.charAt(0).toUpperCase()}`; - } - row(item: Application): TemplateResult[] { return [ - this.renderIcon(item), + html``, html`
${item.name}
${item.metaPublisher ? html`${item.metaPublisher}` : html``} diff --git a/web/src/admin/applications/ApplicationViewPage.ts b/web/src/admin/applications/ApplicationViewPage.ts index 68f363f49..8ff27f8b9 100644 --- a/web/src/admin/applications/ApplicationViewPage.ts +++ b/web/src/admin/applications/ApplicationViewPage.ts @@ -2,6 +2,7 @@ import "@goauthentik/admin/applications/ApplicationAuthorizeChart"; import "@goauthentik/admin/applications/ApplicationCheckAccessForm"; import "@goauthentik/admin/applications/ApplicationForm"; import "@goauthentik/admin/policies/BoundPoliciesList"; +import { PFSize } from "@goauthentik/app/elements/Spinner"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/EmptyState"; @@ -9,6 +10,7 @@ import "@goauthentik/elements/PageHeader"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/events/ObjectChangelog"; +import "@goauthentik/user/LibraryApplication/AppIcon"; import { msg } from "@lit/localize"; import { CSSResult, TemplateResult, html } from "lit"; @@ -80,11 +82,15 @@ export class ApplicationViewPage extends AKElement { render(): TemplateResult { return html` + ${this.renderApp()}`; } diff --git a/web/src/elements/Expand.ts b/web/src/elements/Expand.ts index 75cd233ad..1cc162999 100644 --- a/web/src/elements/Expand.ts +++ b/web/src/elements/Expand.ts @@ -1,7 +1,7 @@ import { AKElement } from "@goauthentik/elements/Base"; import { msg } from "@lit/localize"; -import { CSSResult, TemplateResult, html } from "lit"; +import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFExpandableSection from "@patternfly/patternfly/components/ExpandableSection/expandable-section.css"; @@ -19,7 +19,15 @@ export class Expand extends AKElement { textClosed = msg("Show more"); static get styles(): CSSResult[] { - return [PFBase, PFExpandableSection]; + return [ + PFBase, + PFExpandableSection, + css` + .pf-c-expandable-section.pf-m-display-lg { + background-color: var(--pf-global--BackgroundColor--100); + } + `, + ]; } render(): TemplateResult { diff --git a/web/src/elements/PageHeader.ts b/web/src/elements/PageHeader.ts index 590cabee7..e4364ddf5 100644 --- a/web/src/elements/PageHeader.ts +++ b/web/src/elements/PageHeader.ts @@ -91,6 +91,11 @@ export class PageHeader extends AKElement { .notification-trigger.has-notifications { color: var(--pf-global--active-color--100); } + h1 { + display: flex; + flex-direction: row; + align-items: center !important; + } `, ]; } @@ -120,10 +125,10 @@ export class PageHeader extends AKElement { renderIcon(): TemplateResult { if (this.icon) { if (this.iconImage && !this.icon.startsWith("fa://")) { - return html`page icon `; + return html`page icon`; } const icon = this.icon.replaceAll("fa://", "fa "); - return html` `; + return html``; } return html``; } @@ -147,8 +152,8 @@ export class PageHeader extends AKElement {

- ${this.renderIcon()} - ${this.header} + ${this.renderIcon()}  + ${this.header}

${this.description ? html`

${this.description}

` : html``}
diff --git a/web/src/user/LibraryApplication/AppIcon.ts b/web/src/user/LibraryApplication/AppIcon.ts new file mode 100644 index 000000000..34cd5c551 --- /dev/null +++ b/web/src/user/LibraryApplication/AppIcon.ts @@ -0,0 +1,80 @@ +import { AKElement } from "@goauthentik/app/elements/Base"; +import { PFSize } from "@goauthentik/app/elements/Spinner"; + +import { msg } from "@lit/localize"; +import { CSSResult, TemplateResult, css, html } from "lit"; +import { customElement, property } from "lit/decorators.js"; +import { ifDefined } from "lit/directives/if-defined.js"; + +import PFFAIcons from "@patternfly/patternfly/base/patternfly-fa-icons.css"; +import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; + +import { Application } from "@goauthentik/api"; + +@customElement("ak-app-icon") +export class AppIcon extends AKElement { + @property({ attribute: false }) + app?: Application; + + @property() + size: PFSize = PFSize.Large; + + static get styles(): CSSResult[] { + return [ + PFFAIcons, + PFAvatar, + css` + :host([size="pf-m-lg"]) { + --icon-height: 4rem; + --icon-border: 0.25rem; + } + :host([size="pf-m-md"]) { + --icon-height: 2rem; + --icon-border: 0.125rem; + } + :host([size="pf-m-sm"]) { + --icon-height: 1rem; + --icon-border: 0.125rem; + } + .pf-c-avatar { + --pf-c-avatar--BorderRadius: 0; + --pf-c-avatar--Height: calc( + var(--icon-height) + var(--icon-border) + var(--icon-border) + ); + --pf-c-avatar--Width: calc( + var(--icon-height) + var(--icon-border) + var(--icon-border) + ); + } + .icon { + font-size: var(--icon-height); + color: var(--ak-global--Color--100); + padding: var(--icon-border); + max-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); + line-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); + filter: drop-shadow(5px 5px 5px rgba(128, 128, 128, 0.25)); + } + div { + height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); + } + `, + ]; + } + + render(): TemplateResult { + if (!this.app) { + return html`
`; + } + if (this.app?.metaIcon) { + if (this.app.metaIcon.startsWith("fa://")) { + const icon = this.app.metaIcon.replaceAll("fa://", ""); + return html`
`; + } + return html`${msg(`; + } + return html`${this.app?.name.charAt(0).toUpperCase()}`; + } +} diff --git a/web/src/user/LibraryApplication.ts b/web/src/user/LibraryApplication/index.ts similarity index 69% rename from web/src/user/LibraryApplication.ts rename to web/src/user/LibraryApplication/index.ts index be9e0d2a8..412f825aa 100644 --- a/web/src/user/LibraryApplication.ts +++ b/web/src/user/LibraryApplication/index.ts @@ -1,6 +1,7 @@ import { truncateWords } from "@goauthentik/common/utils"; import { AKElement, rootInterface } from "@goauthentik/elements/Base"; import "@goauthentik/elements/Expand"; +import "@goauthentik/user/LibraryApplication/AppIcon"; import { UserInterface } from "@goauthentik/user/UserInterface"; import { msg } from "@lit/localize"; @@ -8,7 +9,6 @@ import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; -import PFAvatar from "@patternfly/patternfly/components/Avatar/avatar.css"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; @@ -31,24 +31,10 @@ export class LibraryApplication extends AKElement { PFBase, PFCard, PFButton, - PFAvatar, css` - :host { - --icon-height: 4rem; - --icon-border: 0.25rem; - } .pf-c-card { --pf-c-card--BoxShadow: var(--pf-global--BoxShadow--md); } - .pf-c-avatar { - --pf-c-avatar--BorderRadius: 0; - --pf-c-avatar--Height: calc( - var(--icon-height) + var(--icon-border) + var(--icon-border) - ); - --pf-c-avatar--Width: calc( - var(--icon-height) + var(--icon-border) + var(--icon-border) - ); - } .pf-c-card__header { justify-content: space-between; flex-direction: column; @@ -58,13 +44,8 @@ export class LibraryApplication extends AKElement { flex-direction: column; justify-content: center; } - .icon { - font-size: var(--icon-height); - color: var(--ak-global--Color--100); - padding: var(--icon-border); - max-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); - line-height: calc(var(--icon-height) + var(--icon-border) + var(--icon-border)); - filter: drop-shadow(5px 5px 5px rgba(128, 128, 128, 0.25)); + a:hover { + text-decoration: none; } .expander { flex-grow: 1; @@ -80,21 +61,6 @@ export class LibraryApplication extends AKElement { ]; } - renderIcon(): TemplateResult { - if (this.application?.metaIcon) { - if (this.application.metaIcon.startsWith("fa://")) { - const icon = this.application.metaIcon.replaceAll("fa://", ""); - return html``; - } - return html`${msg(`; - } - return html`${this.application?.name.charAt(0).toUpperCase()}`; - } - render(): TemplateResult { if (!this.application) { return html``; @@ -111,7 +77,7 @@ export class LibraryApplication extends AKElement { href="${ifDefined(this.application.launchUrl ?? "")}" target="${ifDefined(this.application.openInNewTab ? "_blank" : undefined)}" > - ${this.renderIcon()} +
diff --git a/web/xliff/de.xlf b/web/xliff/de.xlf index d7701e397..9a50fe703 100644 --- a/web/xliff/de.xlf +++ b/web/xliff/de.xlf @@ -5751,15 +5751,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5828,6 +5819,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/en.xlf b/web/xliff/en.xlf index 558bcb539..4835d9d6c 100644 --- a/web/xliff/en.xlf +++ b/web/xliff/en.xlf @@ -6067,15 +6067,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -6144,6 +6135,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/es.xlf b/web/xliff/es.xlf index 66943b48c..c960b3ab8 100644 --- a/web/xliff/es.xlf +++ b/web/xliff/es.xlf @@ -5659,15 +5659,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5736,6 +5727,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/fr_FR.xlf b/web/xliff/fr_FR.xlf index e92b47ee2..1272e2f40 100644 --- a/web/xliff/fr_FR.xlf +++ b/web/xliff/fr_FR.xlf @@ -5766,15 +5766,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5843,6 +5834,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/pl.xlf b/web/xliff/pl.xlf index 7c53d39e8..88f7c777e 100644 --- a/web/xliff/pl.xlf +++ b/web/xliff/pl.xlf @@ -5898,15 +5898,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5975,6 +5966,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/pseudo-LOCALE.xlf b/web/xliff/pseudo-LOCALE.xlf index 1f75bd37c..45f3b5523 100644 --- a/web/xliff/pseudo-LOCALE.xlf +++ b/web/xliff/pseudo-LOCALE.xlf @@ -6002,15 +6002,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -6079,6 +6070,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/tr.xlf b/web/xliff/tr.xlf index d2d47721e..854010952 100644 --- a/web/xliff/tr.xlf +++ b/web/xliff/tr.xlf @@ -5649,15 +5649,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5726,6 +5717,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/zh-Hans.xlf b/web/xliff/zh-Hans.xlf index e3a001c38..bf3e8ec54 100644 --- a/web/xliff/zh-Hans.xlf +++ b/web/xliff/zh-Hans.xlf @@ -1,4 +1,4 @@ - + @@ -618,9 +618,9 @@ - The URL "" was not found. - 未找到 URL " - "。 + The URL "" was not found. + 未找到 URL " + "。 @@ -1072,8 +1072,8 @@ - To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. - 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 + To allow any redirect URI, set this value to ".*". Be aware of the possible security implications this can have. + 要允许任何重定向 URI,请将此值设置为 ".*"。请注意这可能带来的安全影响。 @@ -1819,8 +1819,8 @@ - Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". - 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 + Either input a full URL, a relative path, or use 'fa://fa-test' to use the Font Awesome icon "fa-test". + 输入完整 URL、相对路径,或者使用 'fa://fa-test' 来使用 Font Awesome 图标 "fa-test"。 @@ -3248,8 +3248,8 @@ doesn't pass when either or both of the selected options are equal or above the - Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' - 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' + Field which contains members of a group. Note that if using the "memberUid" field, the value is assumed to contain a relative distinguished name. e.g. 'memberUid=some-user' instead of 'memberUid=cn=some-user,ou=groups,...' + 包含组成员的字段。请注意,如果使用 "memberUid" 字段,则假定该值包含相对可分辨名称。例如,'memberUid=some-user' 而不是 'memberUid=cn=some-user,ou=groups,...' @@ -4046,8 +4046,8 @@ doesn't pass when either or both of the selected options are equal or above the - When using an external logging solution for archiving, this can be set to "minutes=5". - 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 + When using an external logging solution for archiving, this can be set to "minutes=5". + 使用外部日志记录解决方案进行存档时,可以将其设置为 "minutes=5"。 @@ -4056,8 +4056,8 @@ doesn't pass when either or both of the selected options are equal or above the - Format: "weeks=3;days=2;hours=3,seconds=2". - 格式:"weeks=3;days=2;hours=3,seconds=2"。 + Format: "weeks=3;days=2;hours=3,seconds=2". + 格式:"weeks=3;days=2;hours=3,seconds=2"。 @@ -4253,10 +4253,10 @@ doesn't pass when either or both of the selected options are equal or above the - Are you sure you want to update ""? + Are you sure you want to update ""? 您确定要更新 - " - " 吗? + " + " 吗? @@ -5372,7 +5372,7 @@ doesn't pass when either or both of the selected options are equal or above the - A "roaming" authenticator, like a YubiKey + A "roaming" authenticator, like a YubiKey 像 YubiKey 这样的“漫游”身份验证器 @@ -5712,10 +5712,10 @@ doesn't pass when either or both of the selected options are equal or above the - ("", of type ) + ("", of type ) - (" - ",类型为 + (" + ",类型为 @@ -5764,7 +5764,7 @@ doesn't pass when either or both of the selected options are equal or above the - If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. + If set to a duration above 0, the user will have the option to choose to "stay signed in", which will extend their session by the time specified here. 如果设置时长大于 0,用户可以选择“保持登录”选项,这将使用户的会话延长此处设置的时间。 @@ -7585,18 +7585,6 @@ Bindings to groups/users are checked against the user of the event. User type 用户类型 - - Default user - 默认用户 - - - External user - 外部用户 - - - Service account - 服务账户 - Successfully updated license. 已成功更新许可证。 @@ -7688,7 +7676,22 @@ Bindings to groups/users are checked against the user of the event. Install License 安装许可证 + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details - \ No newline at end of file + diff --git a/web/xliff/zh-Hant.xlf b/web/xliff/zh-Hant.xlf index 6c12ad6ed..7806a82d0 100644 --- a/web/xliff/zh-Hant.xlf +++ b/web/xliff/zh-Hant.xlf @@ -5704,15 +5704,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5781,6 +5772,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details diff --git a/web/xliff/zh_TW.xlf b/web/xliff/zh_TW.xlf index 70ec3208d..18b19b68b 100644 --- a/web/xliff/zh_TW.xlf +++ b/web/xliff/zh_TW.xlf @@ -5703,15 +5703,6 @@ Bindings to groups/users are checked against the user of the event. User type - - Default user - - - External user - - - Service account - Successfully updated license. @@ -5780,6 +5771,21 @@ Bindings to groups/users are checked against the user of the event. Install License + + + Internal users might be users such as company employees, which will get access to the full Enterprise feature set. + + + External users might be external consultants or B2C customers. These users don't get access to enterprise features. + + + Service accounts should be used for machine-to-machine authentication or other automations. + + + Less details + + + More details