diff --git a/webapp/channels/src/i18n/en-AU.json b/webapp/channels/src/i18n/en-AU.json
index 40f9c44407..2c586de273 100644
--- a/webapp/channels/src/i18n/en-AU.json
+++ b/webapp/channels/src/i18n/en-AU.json
@@ -176,7 +176,7 @@
"add_outgoing_oauth_connection.audienceUrls.help": "The URLs which will receive requests with the OAuth token, e.g. your custom slash command handler endpoint. Must be a valid URL and start with http:// or https://.",
"add_outgoing_oauth_connection.audienceUrls.label": "Audience URLs (One Per Line)",
"add_outgoing_oauth_connection.audienceUrls.required": "One or more audience URLs are required.",
- "add_outgoing_oauth_connection.audience_urls": "Audience URL(s): `{url}`",
+ "add_outgoing_oauth_connection.audience_urls": "Audience URL(s): {url}",
"add_outgoing_oauth_connection.cancel": "Cancel",
"add_outgoing_oauth_connection.clientId": "Client ID: {id}",
"add_outgoing_oauth_connection.clientSecret": "Client Secret: \\*\\*\\*\\*\\*\\*\\*\\*",
@@ -204,7 +204,7 @@
"add_outgoing_oauth_connection.save_anyway": "Save anyway",
"add_outgoing_oauth_connection.save_without_validation_warning": "This connection has not been validated, do you want to save anyway?",
"add_outgoing_oauth_connection.saving": "Saving...",
- "add_outgoing_oauth_connection.token_url": "Token URL: `{url}`",
+ "add_outgoing_oauth_connection.token_url": "Token URL: {url}",
"add_outgoing_oauth_connection.username": "Username: {username}",
"add_outgoing_oauth_connection.validate": "Validate Connection",
"add_outgoing_oauth_connection.validated_connection": "Validated connection",
@@ -260,10 +260,104 @@
"adldap_upsell_banner.confirm.license_trial": "Welcome to your Mattermost Enterprise trial! You have access to high-security Enterprise features for free until {endDate}.",
"adldap_upsell_banner.confirm.title": "Your trial has started!",
"adldap_upsell_banner.sales_btn": "Contact sales to use",
+ "admin.access_control.cel.incomplete_expression": "Incomplete expression, awaiting input...",
+ "admin.access_control.cel.line_and_column_number": "L{lineNumber}:{columnNumber}",
+ "admin.access_control.cel.type_expression": "Type an expression...",
+ "admin.access_control.cel.validating": "Validating...",
+ "admin.access_control.cel_help_modal.external_link": "For more information, visit CEL Documentation.",
+ "admin.access_control.cel_help_modal.important_notes_title": "Important Notes",
+ "admin.access_control.cel_help_modal.subheader": "With CEL you can define conditions to filter user attributes and control resource access.",
+ "admin.access_control.cel_help_modal.title": "Common Expression Language (CEL)",
+ "admin.access_control.delete": "Delete",
+ "admin.access_control.edit": "Edit",
+ "admin.access_control.edit_policy.apply_policy": "Apply policy",
+ "admin.access_control.edit_policy.cancel": "Cancel",
+ "admin.access_control.edit_policy.save": "Save",
+ "admin.access_control.edit_policy.save_policy": "Save policy",
+ "admin.access_control.edit_policy.serverError": "There are errors in the form above: {serverError}",
+ "admin.access_control.jobTable.details.subheader": "Finished at {finishedAt}",
+ "admin.access_control.policies.add_policy": "Add policy",
+ "admin.access_control.policies.applies_to": "Applies to",
+ "admin.access_control.policies.description": "Create policies containing attribute based access rules and the resources they apply to.",
+ "admin.access_control.policies.menu.aria_label": "Policy actions menu",
+ "admin.access_control.policies.name": "Name",
+ "admin.access_control.policies.resources.channels": "{count, number} {count, plural, one {channel} other {channels}}",
+ "admin.access_control.policies.resources.none": "None",
+ "admin.access_control.policies.title": "Access Control Policies",
+ "admin.access_control.policy.channels_affected": "Are you sure you want to save and apply the access control policy?",
+ "admin.access_control.policy.edit_policy.access_rules.subtitle": "Select user attributes and values as rules to restrict channel membership.",
+ "admin.access_control.policy.edit_policy.access_rules.title": "Attribute-based access rules",
+ "admin.access_control.policy.edit_policy.autoSyncMembership": "Auto-add members based on access rules:",
+ "admin.access_control.policy.edit_policy.autoSyncMembership.description": "Users who match the attribute values configured below will be automatically added as new members. Regardless of this setting, users who later no longer match the configured attribute values will be removed from the channel after the next sync.",
+ "admin.access_control.policy.edit_policy.channel_selector.addChannels": "Add channels",
+ "admin.access_control.policy.edit_policy.channel_selector.remove": "Remove",
+ "admin.access_control.policy.edit_policy.channel_selector.subtitle": "Add channels that this attribute-based access policy will apply to.",
+ "admin.access_control.policy.edit_policy.channel_selector.title": "Assigned channels",
+ "admin.access_control.policy.edit_policy.complex_expression_tooltip": "Complex expression detected. Simple expressions editor is not available at the moment.",
+ "admin.access_control.policy.edit_policy.delete_confirmation.confirm_button": "Delete Policy",
+ "admin.access_control.policy.edit_policy.delete_confirmation.message": "Are you sure you want to delete this policy? This action cannot be undone.",
+ "admin.access_control.policy.edit_policy.delete_confirmation.title": "Confirm Policy Deletion",
+ "admin.access_control.policy.edit_policy.delete_policy.delete": "Delete",
+ "admin.access_control.policy.edit_policy.delete_policy.subtitle": "This policy will be deleted and cannot be recovered.",
+ "admin.access_control.policy.edit_policy.delete_policy.subtitle.has_resources": "Remove all assigned resources (eg. Channels) to be able to delete this policy",
+ "admin.access_control.policy.edit_policy.delete_policy.title": "Delete policy",
+ "admin.access_control.policy.edit_policy.error.assign_channels": "Error assigning channels: {error}",
+ "admin.access_control.policy.edit_policy.error.create_job": "Error creating job: {error}",
+ "admin.access_control.policy.edit_policy.error.delete_policy": "Error deleting policy: {error}",
+ "admin.access_control.policy.edit_policy.error.expression_required": "Please add an expression to the policy",
+ "admin.access_control.policy.edit_policy.error.name_required": "Please add a name to the policy",
+ "admin.access_control.policy.edit_policy.error.unassign_channels": "Error unassigning channels: {error}",
+ "admin.access_control.policy.edit_policy.error.update_active_status": "Error updating policy active status: {error}",
+ "admin.access_control.policy.edit_policy.notice.button": "Configure user attributes",
+ "admin.access_control.policy.edit_policy.notice.text": "You havent configured any user attributes yet. Attribute-Based Access Control requires user attributes that are either synced from an external system (like LDAP or SAML) or manually configured and enabled on this server. To start using attribute based access, please configure user attributes in System Attributes.",
+ "admin.access_control.policy.edit_policy.notice.title": "Please add user attributes and values to use Attribute-Based Access Control",
+ "admin.access_control.policy.edit_policy.policyName": "Access control policy name:",
+ "admin.access_control.policy.edit_policy.policyName.placeholder": "Add a unique policy name",
+ "admin.access_control.policy.edit_policy.switch_to_advanced": "Switch to Advanced Mode",
+ "admin.access_control.policy.edit_policy.switch_to_simple": "Switch to Simple Mode",
+ "admin.access_control.policy.edit_policy.title": "Edit Access Control Policy",
+ "admin.access_control.policy.enforce_immediately": "Enforce policy immediately",
+ "admin.access_control.policy.save_only": "Are you sure you want to save this access control policy?",
+ "admin.access_control.policy.save_policy_confirmation_body": "Applying this policy will allow users with the appropriate attribute values to be added to the selected channels. Existing channel members will be removed from these channels if they are not assigned the values defined in this access policy.",
+ "admin.access_control.policy.save_policy_confirmation_body.inactive": "Only users who match the attribute values configured below can be added to the selected channels. Existing channel members will be removed from these channels if they are not assigned the values defined in this access policy.",
+ "admin.access_control.policy.save_policy_confirmation_subheader": "{count} channels will be affected.",
+ "admin.access_control.policy.save_policy_confirmation_title": "Save access control policy ",
+ "admin.access_control.table_editor.add_attribute": "Add attribute",
+ "admin.access_control.table_editor.attribute": "Attribute",
+ "admin.access_control.table_editor.attribute_spaces_not_supported": "CEL is not compatible with variable names containing spaces",
+ "admin.access_control.table_editor.attribute_synced": "This attribute is synced from an external source",
+ "admin.access_control.table_editor.blank_state": "Select a user attribute and values to create a rule",
+ "admin.access_control.table_editor.create_value": "Create '\\{value}'\\",
+ "admin.access_control.table_editor.help_text": "Each row is a single condition that must be met for a user to comply with the policy. All rules are combined with logical AND operator (`&&`).",
+ "admin.access_control.table_editor.learnMore": "Learn more about creating access expressions with examples.",
+ "admin.access_control.table_editor.operator": "Operator",
+ "admin.access_control.table_editor.operator.contains": "contains",
+ "admin.access_control.table_editor.operator.ends_with": "ends with",
+ "admin.access_control.table_editor.operator.in": "in",
+ "admin.access_control.table_editor.operator.is": "is",
+ "admin.access_control.table_editor.operator.is_not": "is not",
+ "admin.access_control.table_editor.operator.starts_with": "starts with",
+ "admin.access_control.table_editor.remove_row": "Remove row",
+ "admin.access_control.table_editor.selector.filter_attributes": "Search attributes...",
+ "admin.access_control.table_editor.selector.filter_operators": "Search operators...",
+ "admin.access_control.table_editor.selector.filter_or_create": "Search or create value...",
+ "admin.access_control.table_editor.selector.select_attribute": "Select attribute",
+ "admin.access_control.table_editor.test_access_rule": "Test access rule",
+ "admin.access_control.table_editor.value.placeholder": "Add value...",
+ "admin.access_control.table_editor.value.select_value": "Select value",
+ "admin.access_control.table_editor.values": "Values",
+ "admin.access_control.table_editor.values.create_placeholder": "Type to create value",
+ "admin.access_control.table_editor.values.select_values": "Select values...",
+ "admin.access_control.testResults": "Access Rule Test Results",
+ "admin.accesscontrol.enableDesc": "Allow access restrictions based on user attributes using custom access policies. To effectively use this feature, you must define user attributes (properties) in the {userAttributes} section.",
+ "admin.accesscontrol.enableTitle": "Allow attribute based access controls on this servers",
+ "admin.accesscontrol.title": "Attribute-Based Access",
"admin.advance.cluster": "High Availability",
"admin.advance.metrics": "Performance Monitoring",
"admin.announcement_banner_feature_discovery.copy": "Create announcement banners to notify all members of important information.",
"admin.announcement_banner_feature_discovery.title": "Create custom announcement banners with Mattermost Professional",
+ "admin.attribute_based_access_control_feature_discovery.desc": "Create policies containing access rules based on user attributes and apply them to channels and other resources within Mattermost.",
+ "admin.attribute_based_access_control_feature_discovery.title": "Use attribute based access policies to control channel access with Mattermost Enterprise Advanced",
"admin.audit_logging_experimental.certificate.help_text": "The certificate file used for audit logging encryption.",
"admin.audit_logging_experimental.certificate.remove_button": "Remove Certificate",
"admin.audit_logging_experimental.certificate.remove_help_text": "Remove the certificate used for audit logging encryption.",
@@ -275,21 +369,22 @@
"admin.audit_logging_experimental.file_compress.title": "File Compression",
"admin.audit_logging_experimental.file_enabled.help_text": "Choose whether audit logs are written locally to a file or not.",
"admin.audit_logging_experimental.file_enabled.title": "File Enabled",
- "admin.audit_logging_experimental.file_max_age.help_text": "The maximum age of an exported file, in days.",
+ "admin.audit_logging_experimental.file_max_age.help_text": "Maximum number of days to retain old log files. 0 disables the removal of old log files.",
"admin.audit_logging_experimental.file_max_age.title": "Max File Age (Days)",
- "admin.audit_logging_experimental.file_max_backups.help_text": "The maximum number of backup files to retain",
+ "admin.audit_logging_experimental.file_max_backups.help_text": "Maximum number of old log files to retain. 0 retains all old log files. Note: Configuring Max File Age can result in old log files being deleted regardless of this configuration value.",
"admin.audit_logging_experimental.file_max_backups.title": "Maximum File Backups",
"admin.audit_logging_experimental.file_max_queue_size.help_text": "The maximum number of files to be retained in the queue.",
"admin.audit_logging_experimental.file_max_queue_size.title": "Maximum File Queue",
- "admin.audit_logging_experimental.file_max_size.help_text": "The maximum size of a single exported file, in MB.",
+ "admin.audit_logging_experimental.file_max_size.help_text": "Maximum size, in megabytes (MB), the log file can grow before it gets rotated.",
"admin.audit_logging_experimental.file_max_size.title": "Max File Size (MB)",
- "admin.audit_logging_experimental.file_name.help_text": "The name of the file to write to. NOTE: If ExperimentalAuditSettings.FileEnabled is set to TRUE, this field is required.",
+ "admin.audit_logging_experimental.file_name.help_text": "The name of the file to write to.",
"admin.audit_logging_experimental.file_name.title": "File Name",
"admin.audits.reload": "Reload User Activity Logs",
"admin.authentication.email": "Email Authentication",
"admin.authentication.gitlab": "GitLab",
"admin.authentication.guest_access": "Guest Access",
"admin.authentication.ldap": "AD/LDAP",
+ "admin.authentication.ldap.wizard": "AD/LDAP Wizard",
"admin.authentication.mfa": "Multi-factor Authentication",
"admin.authentication.oauth": "OAuth 2.0",
"admin.authentication.openid": "OpenID Connect",
@@ -466,31 +561,49 @@
"admin.channelSettings.channelDetail.channelName": "Name",
"admin.channelSettings.channelDetail.channelTeam": "Team",
"admin.channelSettings.channelDetail.channel_organizations": "Organisations",
+ "admin.channel_details.policy_public_error": "You cannot assign a policy to a public channel.",
+ "admin.channel_details.policy_required_error": "You must select an access policy when attribute-based channel access is enabled.",
+ "admin.channel_details.policy_synced_error": "You cannot assign a policy to a synced channel.",
"admin.channel_list.archived": "Archived",
+ "admin.channel_list.attributed_based": "Attribute Based",
"admin.channel_list.group_sync": "Group Sync",
"admin.channel_list.manual_invites": "Manual Invites",
"admin.channel_list.private": "Private",
"admin.channel_list.public": "Public",
+ "admin.channel_settings.channel_detail.access_control_policy_actions": "Actions",
+ "admin.channel_settings.channel_detail.access_control_policy_description": "Select an access policy for this channel to restrict membership.",
+ "admin.channel_settings.channel_detail.access_control_policy_name": "Name",
+ "admin.channel_settings.channel_detail.access_control_policy_title": "Access policy",
"admin.channel_settings.channel_detail.archive_confirm.button": "Save and Archive Channel",
"admin.channel_settings.channel_detail.archive_confirm.message": "Saving will archive the channel from the team and make its contents inaccessible for all users. Are you sure you wish to save and archive this channel?",
"admin.channel_settings.channel_detail.archive_confirm.title": "Save and Archive Channel",
"admin.channel_settings.channel_detail.channelOrganizationsMessage": "Shared with trusted organisations",
"admin.channel_settings.channel_detail.channel_configuration": "Channel Configuration",
+ "admin.channel_settings.channel_detail.go_to_policy.aria_label": "Go to the policy",
"admin.channel_settings.channel_detail.groupsDescription": "Select groups to be added to this channel.",
"admin.channel_settings.channel_detail.groupsTitle": "Groups",
+ "admin.channel_settings.channel_detail.link_policy": "Link to a policy",
"admin.channel_settings.channel_detail.manageDescription": "Choose between inviting members manually or syncing members automatically from groups.",
"admin.channel_settings.channel_detail.manageTitle": "Channel Management",
"admin.channel_settings.channel_detail.membersDescription": "A list of users who are currently in the channel right now",
"admin.channel_settings.channel_detail.membersTitle": "Members",
+ "admin.channel_settings.channel_detail.policy_following": "This channel is currently using the following access policy.",
"admin.channel_settings.channel_detail.profileDescription": "Summary of the channel, including the channel name.",
"admin.channel_settings.channel_detail.profileTitle": "Channel Profile",
+ "admin.channel_settings.channel_detail.remove_policy": "Remove policy",
+ "admin.channel_settings.channel_detail.select_policy": "Select an access policy for this channel to restrict membership",
+ "admin.channel_settings.channel_detail.select_policy_description": "An access control policy will restrict channel membership based on user attributes.",
+ "admin.channel_settings.channel_detail.select_policy_title": "Select an Access Control Policy",
"admin.channel_settings.channel_detail.syncedGroupsDescription": "Add and remove channel members based on their group membership.",
"admin.channel_settings.channel_detail.syncedGroupsTitle": "Synced Groups",
"admin.channel_settings.channel_details.add_group": "Add Group",
"admin.channel_settings.channel_details.archiveChannel": "Archive Channel",
+ "admin.channel_settings.channel_details.attribute_based_description": "Restrict which users can be invited to this channel based on their user attributes and values. Only people who match the specified conditions will be allowed to be selected and added to this channel.",
"admin.channel_settings.channel_details.isDefaultDescr": "This default channel cannot be converted into a private channel.",
"admin.channel_settings.channel_details.isPublic": "Public channel or private channel",
"admin.channel_settings.channel_details.isPublicDescr": "Select Public for a channel any user can find and join. {br}Select Private to require channel invitations to join. {br}Use this switch to change this channel from public to private or from private to public.",
+ "admin.channel_settings.channel_details.policy_enforced_title": "Enable attribute based channel access",
+ "admin.channel_settings.channel_details.private_channel_only": "Only private channels can be attribute based.",
"admin.channel_settings.channel_details.syncGroupMembers": "Sync Group Members",
"admin.channel_settings.channel_details.syncGroupMembersDescr": "When enabled, adding and removing users from groups will add or remove them from this channel. The only way of inviting members to this channel is by adding the groups they belong to. Learn More",
"admin.channel_settings.channel_details.unarchiveChannel": "Unarchive Channel",
@@ -538,6 +651,7 @@
"admin.channel_settings.channel_moderation.subtitleMembers": "Manage the actions available to channel members.",
"admin.channel_settings.channel_moderation.title": "Advanced Access Control",
"admin.channel_settings.channel_row.configure": "Edit",
+ "admin.channel_settings.channel_row.managementMethod.attribute_based": "Attribute Based",
"admin.channel_settings.channel_row.managementMethod.group": "Group Sync",
"admin.channel_settings.channel_row.managementMethod.manual": "Manual Invites",
"admin.channel_settings.description": "Manage channel settings.",
@@ -574,7 +688,7 @@
"admin.cluster.status_table.url": "Gossip Address",
"admin.cluster.status_table.version": "Version",
"admin.cluster.unknown": "unknown",
- "admin.cluster.version_mismatch_warning": "WARNING: Multiple versions of Mattermost has been detected in your HA cluster. Unless you are currently performing an upgrade please ensure all nodes in your cluster are running the same Mattermost version to avoid platform disruption.",
+ "admin.cluster.version_mismatch_warning": "WARNING: Multiple Mattermost versions have been detected in your HA cluster, or the running versions cannot be properly identified. Unless upgrading, ensure all nodes are on the same version and can communicate via Gossip to prevent platform issues.",
"admin.compliance.complianceMonitoring": "Compliance Monitoring",
"admin.compliance.directoryDescription": "Directory to which compliance reports are written. If blank, will be set to ./data/.",
"admin.compliance.directoryExample": "E.g.: './data/'",
@@ -656,7 +770,7 @@
"admin.connectionSecurityTlsDescription": "Encrypts the communication between Mattermost and your server.",
"admin.customProfileAttribDesc": "(Optional) The attribute in the SAML Assertion that will be used to populate the {name} of users in Mattermost.",
"admin.customProfileAttribWarning": "(Warning) This attribute will be converted to a TEXT attribute, if the field is set to synchronise.",
- "admin.customProfileAttributes.subtitle": "You can add or remove custom profile attributes by going to the system properties page.",
+ "admin.customProfileAttributes.subtitle": "You can add or remove custom profile attributes by going to the user attributes page.",
"admin.customProfileAttributes.title": "Custom profile attributes sync",
"admin.custom_terms_of_service_feature_discovery.copy": "Create your own terms of service that new users must accept before accessing your Mattermost instance on desktop, web, or mobile.",
"admin.custom_terms_of_service_feature_discovery.title": "Create custom terms of service with Mattermost Enterprise",
@@ -931,6 +1045,8 @@
"admin.experimental.allowCustomThemes.title": "Allow Custom Themes:",
"admin.experimental.allowedEmailDomain.desc": "(Optional) When set, users must have an email ending in this domain to move threads. Multiple domains can be specified by separating them with commas.",
"admin.experimental.allowedEmailDomain.title": "Allowed Email Domain",
+ "admin.experimental.channelCategorySorting.desc": "When true, channels will be automatically sorted into categories based on their names using a '/' delimiter.",
+ "admin.experimental.channelCategorySorting.title": "Channel Category Sorting:",
"admin.experimental.clientSideCertCheck.desc": "When **primary**, after the client side certificate is verified, user’s email is retrieved from the certificate and is used to log in without a password. When **secondary**, after the client side certificate is verified, user’s email is retrieved from the certificate and matched against the one supplied by the user. If they match, the user logs in with regular email/password credentials.",
"admin.experimental.clientSideCertCheck.options.primary": "primary",
"admin.experimental.clientSideCertCheck.options.secondary": "secondary",
@@ -1281,6 +1397,7 @@
"admin.ip_filtering.your_current_ip_is": "Your current IP address is {ip}",
"admin.ip_filtering.your_current_ip_is_not_in_allowed_rules": "Your IP address {ip} is not included in your allowed IP address rules.",
"admin.jobTable.cancelButton": "Cancel",
+ "admin.jobTable.details.title": "Job Details",
"admin.jobTable.downloadLink": "Download",
"admin.jobTable.headerExtraInfo": "Details",
"admin.jobTable.headerFiles": "Files",
@@ -1298,16 +1415,27 @@
"admin.jobTable.statusPending": "Pending",
"admin.jobTable.statusSuccess": "Success",
"admin.jobTable.statusWarning": "Warning",
+ "admin.jobTable.syncResults.added": "Added ({count, number})",
+ "admin.jobTable.syncResults.error": "An error occurred while syncing the channels.",
+ "admin.jobTable.syncResults.noResultsSearchable": "No channels match your search or filter.",
+ "admin.jobTable.syncResults.removed": "Removed ({count, number})",
+ "admin.jobTable.syncResults.userListTitle": "Channel Membership Changes",
"admin.ldap.adminFilterEx": "E.g.: '(objectClass=user)'",
- "admin.ldap.adminFilterFilterDesc": "(Optional) Enter an AD/LDAP filter to use for designating System Admins. The users selected by the query will have access to your Mattermost server as System Admins. By default, System Admins have complete access to the Mattermost System Console.\n \nExisting members that are identified by this attribute will be promoted from member to System Admin upon next login. The next login is based upon Session lengths set in **System Console > Session Lengths**. It is highly recommend to manually demote users to members in **System Console > User Management** to ensure access is restricted immediately.\n \nNote: If this filter is removed/changed, System Admins that were promoted via this filter will be demoted to members and will not retain access to the System Console. When this filter is not in use, System Admins can be manually promoted/demoted in **System Console > User Management**.",
+ "admin.ldap.adminFilterFilterDesc": "(Optional) Enter an AD/LDAP filter to use for designating System Admins.",
+ "admin.ldap.adminFilterFilterDescHover": "The users selected by the query will have access to your Mattermost server as System Admins. By default, System Admins have complete access to the Mattermost System Console. Existing members that are identified by this attribute will be promoted from member to System Admin upon next login. The next login is based upon Session lengths set in System Console > Session Lengths. It is highly recommend to manually demote users to members in System Console > User Management to ensure access is restricted immediately.\n \nNote: If this filter is removed/changed, System Admins that were promoted via this filter will be demoted to members and will not retain access to the System Console. When this filter is not in use, System Admins can be manually promoted/demoted in System Console > User Management.",
"admin.ldap.adminFilterTitle": "Admin Filter:",
+ "admin.ldap.attributeTestFailed": "Attribute test failed{showError, select, true {: {error}} other {}}",
+ "admin.ldap.attributeTestSuccess": "Attribute test successful: {countReturned, number} result{countReturned, plural, one {} other {s}} found out of {totalCount} user{totalCount, plural, one {} other {s}} returned by the user filter",
+ "admin.ldap.attributeTestWarning": "The attribute was not found in any of the {totalCount} user{totalCount, plural, one {} other {s}} returned by the user filter",
"admin.ldap.baseDesc": "The Base DN is the Distinguished Name of the location where Mattermost should start its search for user and group objects in the AD/LDAP tree.",
"admin.ldap.baseEx": "E.g.: 'ou=Unit Name,dc=corp,dc=example,dc=com'",
"admin.ldap.baseTitle": "Base DN:",
"admin.ldap.bindPwdDesc": "Password of the user given in 'Bind Username'.",
"admin.ldap.bindPwdTitle": "Bind Password:",
- "admin.ldap.bindUserDesc": "The username used to perform the AD/LDAP search. This should typically be an account created specifically for use with Mattermost. It should have access limited to read the portion of the AD/LDAP tree specified in the Base DN field.",
+ "admin.ldap.bindUserDesc": "The username used to perform the AD/LDAP search.",
+ "admin.ldap.bindUserDescHover": "This should typically be an account created specifically for use with Mattermost. It should have access limited to read the portion of the AD/LDAP tree specified in the Base DN field.",
"admin.ldap.bindUserTitle": "Bind Username:",
+ "admin.ldap.configure_additional_filters": "Configure additional filters",
"admin.ldap.emailAttrDesc": "The attribute in the AD/LDAP server used to populate the email address field in Mattermost.",
"admin.ldap.emailAttrEx": "E.g.: 'mail' or 'userPrincipalName'",
"admin.ldap.emailAttrTitle": "Email Attribute:",
@@ -1316,22 +1444,33 @@
"admin.ldap.enableSyncDesc": "When true, Mattermost periodically synchronises users from AD/LDAP. When false, user attributes are updated from AD/LDAP during user login only.",
"admin.ldap.enableSyncTitle": "Enable Synchronisation with AD/LDAP:",
"admin.ldap.enableTitle": "Enable sign-in with AD/LDAP:",
- "admin.ldap.firstnameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the first name of users in Mattermost. When set, users cannot edit their first name, since it is synchronised with the LDAP server. When left blank, users can set their first name in Profile > Profile Settings.",
+ "admin.ldap.filterTestFailed": "Filter test failed{showTestValue, select, true {. Value used: {testValue}} other {}}{showError, select, true {: {error}} other {}}",
+ "admin.ldap.filterTestSuccess": "Filter test successful: {countReturned, number} result{countReturned, plural, one {} other {s}} found{showTestValue, select, true {. Value used: {testValue}} other {}}",
+ "admin.ldap.filterTestWarning": "Filter test successful but no results found. Your filter may be too restrictive.{showTestValue, select, true { Value used: {testValue}} other {}}",
+ "admin.ldap.firstnameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the first name of users in Mattermost.",
+ "admin.ldap.firstnameAttrDescHover": "When set, users cannot edit their first name, since it is synchronised with the LDAP server. When left blank, users can set their first name in Account Menu > Account Settings > Profile.",
"admin.ldap.firstnameAttrEx": "E.g.: 'givenName'",
"admin.ldap.firstnameAttrTitle": "First Name Attribute:",
+ "admin.ldap.groupAttributeTestFailed": "Group attribute test failed{showError, select, true {: {error}} other {}}",
+ "admin.ldap.groupAttributeTestSuccess": "Group attribute test successful: {countReturned, number} result{countReturned, plural, one {} other {s}} found out of {totalCount} group{totalCount, plural, one {} other {s}} returned by the group filter",
+ "admin.ldap.groupAttributeTestWarning": "The group attribute was not found in any of the {totalCount} group{totalCount, plural, one {} other {s}} returned by the group filter",
"admin.ldap.groupDisplayNameAttributeDesc": "The attribute in the AD/LDAP server used to populate the group display names.",
"admin.ldap.groupDisplayNameAttributeEx": "E.g.: 'cn'",
"admin.ldap.groupDisplayNameAttributeTitle": "Group Display Name Attribute:",
"admin.ldap.groupFilterEx": "E.g.: '(objectClass=group)'",
- "admin.ldap.groupFilterFilterDesc": "(Optional) Enter an AD/LDAP filter to use when searching for group objects. Only the groups selected by the query will be available to Mattermost. From [User Management > Groups]({siteURL}/admin_console/user_management/groups), select which AD/LDAP groups should be linked and configured.",
+ "admin.ldap.groupFilterFilterDesc": "(Optional) Enter an AD/LDAP filter to use when searching for group objects. From [User Management > Groups]({siteURL}/admin_console/user_management/groups), select which AD/LDAP groups should be linked and configured.",
+ "admin.ldap.groupFilterFilterDescHover": "Only the groups selected by the query will be available to Mattermost.",
"admin.ldap.groupFilterTitle": "Group Filter:",
- "admin.ldap.groupIdAttributeDesc": "The attribute in the AD/LDAP server used as a unique identifier for Groups. This should be a AD/LDAP attribute with a value that does not change such as `entryUUID` for LDAP or `objectGUID` for Active Directory.",
+ "admin.ldap.groupIdAttributeDesc": "The attribute in the AD/LDAP server used as a unique identifier for Groups.",
+ "admin.ldap.groupIdAttributeDescHover": "This should be a AD/LDAP attribute with a value that does not change such as entryUUID for LDAP or objectGUID for Active Directory.",
"admin.ldap.groupIdAttributeEx": "E.g.: 'objectGUID' or 'entryUUID'",
"admin.ldap.groupIdAttributeTitle": "Group ID Attribute:",
"admin.ldap.guestFilterEx": "E.g.: '(objectClass=user)'",
- "admin.ldap.guestFilterFilterDesc": "(Optional) Requires Guest Access to be enabled before being applied. Enter an AD/LDAP filter to use when searching for guest objects. Only the users selected by the query will be able to access Mattermost as Guests. Guests are prevented from accessing teams or channels upon logging in until they are assigned a team and at least one channel.\n \nNote: If this filter is removed/changed, active guests will not be promoted to a member and will retain their Guest role. Guests can be promoted in **System Console > User Management**.\n \n \nExisting members that are identified by this attribute as a guest will be demoted from a member to a guest when they are asked to login next. The next login is based upon Session lengths set in **System Console > Session Lengths**. It is highly recommend to manually demote users to guests in **System Console > User Management ** to ensure access is restricted immediately.",
+ "admin.ldap.guestFilterFilterDesc": "(Optional) Requires Guest Access to be enabled before being applied. Enter an AD/LDAP filter to use when searching for guest objects.",
+ "admin.ldap.guestFilterFilterDescHover": "Only the users selected by the query will be able to access Mattermost as Guests. Guests are prevented from accessing teams or channels upon logging in until they are assigned a team and at least one channel.\n \nNote: If this filter is removed/changed, active guests will not be promoted to a member and will retain their Guest role. Guests can be promoted in System Console > User Management. Existing members that are identified by this attribute as a guest will be demoted from a member to a guest when they are asked to login next. The next login is based upon Session lengths set in System Console > Session Lengths. It is highly recommend to manually demote users to guests in System Console > User Management to ensure access is restricted immediately.",
"admin.ldap.guestFilterTitle": "Guest Filter:",
- "admin.ldap.idAttrDesc": "The attribute in the AD/LDAP server used as a unique identifier in Mattermost. It should be an AD/LDAP attribute with a value that does not change such as `uid` for LDAP or `objectGUID` for Active Directory. If a user's ID Attribute changes, it will create a new Mattermost account unassociated with their old one.\n \nIf you need to change this field after users have already logged in, use the mattermost ldap idmigrate CLI tool.",
+ "admin.ldap.idAttrDesc": "The attribute in the AD/LDAP server used as a unique identifier in Mattermost. If you need to change this field after users have already logged in, use the mattermost ldap idmigrate CLI tool.",
+ "admin.ldap.idAttrDescHover": "It should be an AD/LDAP attribute with a value that does not change such as uid for LDAP or objectGUID for Active Directory. If a user's ID Attribute changes, it will create a new Mattermost account unassociated with their old one.",
"admin.ldap.idAttrEx": "E.g.: 'objectGUID' or 'uid'",
"admin.ldap.idAttrTitle": "ID Attribute: ",
"admin.ldap.jobExtraInfo.addedGroupMembers": "Added {groupMemberAddCount, number} group members.",
@@ -1339,10 +1478,12 @@
"admin.ldap.jobExtraInfo.deletedGroupMembers": "Deleted {groupMemberDeleteCount, number} group members.",
"admin.ldap.jobExtraInfo.deletedGroups": "Deleted {groupDeleteCount, number} groups.",
"admin.ldap.jobExtraInfo.updatedUsers": "Updated {updateCount, number} users.",
- "admin.ldap.lastnameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the last name of users in Mattermost. When set, users cannot edit their last name, since it is synchronised with the LDAP server. When left blank, users can set their last name in Profile > Profile Settings.",
+ "admin.ldap.lastnameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the last name of users in Mattermost.",
+ "admin.ldap.lastnameAttrDescHover": "When set, users cannot edit their last name, since it is synchronised with the LDAP server. When left blank, users can set their last name in Account Menu > Account Settings > Profile.",
"admin.ldap.lastnameAttrEx": "E.g.: 'sn'",
"admin.ldap.lastnameAttrTitle": "Last Name Attribute:",
- "admin.ldap.loginAttrDesc": "The attribute in the AD/LDAP server used to log in to Mattermost. Normally this attribute is the same as the 'Username Attribute' field above.\n \nIf your team typically uses domain/username to log in to other services with AD/LDAP, you may enter domain/username in this field to maintain consistency between sites.",
+ "admin.ldap.loginAttrDesc": "The attribute in the AD/LDAP server used to log in to Mattermost.",
+ "admin.ldap.loginAttrDescHover": "Normally this attribute is the same as the 'Username Attribute' field above. If your team typically uses domain/username to log in to other services with AD/LDAP, you may enter domain/username in this field to maintain consistency between sites.",
"admin.ldap.loginAttrTitle": "Login ID Attribute: ",
"admin.ldap.loginIdAttrEx": "E.g.: 'sAMAccountName'",
"admin.ldap.loginNameDesc": "The placeholder text that appears in the login field on the login page. Defaults to 'AD/LDAP Username'.",
@@ -1351,9 +1492,12 @@
"admin.ldap.maxPageSizeEx": "E.g.: '2000'",
"admin.ldap.maxPageSizeHelpText": "The maximum number of users the Mattermost server will request from the AD/LDAP server at one time. 0 is unlimited.",
"admin.ldap.maxPageSizeTitle": "Maximum Page Size:",
- "admin.ldap.maximumLoginAttemptsDesc": "The maximum number of login attempts before the Mattermost account is locked. You can unlock the account in system console on the users page. Setting this value lower than your LDAP maximum login attempts ensures that the users won't be locked out of your LDAP server because of failed login attempts in Mattermost.",
+ "admin.ldap.maximumLoginAttemptsDesc": "The maximum number of login attempts before the Mattermost account is locked.",
+ "admin.ldap.maximumLoginAttemptsDescHover": "You can unlock the account in system console on the users page. Setting this value lower than your LDAP maximum login attempts ensures that the users won't be locked out of your LDAP server because of failed login attempts in Mattermost.",
"admin.ldap.maximumLoginAttemptsTitle": "Maximum Login Attempts:",
- "admin.ldap.nicknameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the nickname of users in Mattermost. When set, users cannot edit their nickname, since it is synchronised with the LDAP server. When left blank, users can set their nickname in Profile > Profile Settings.",
+ "admin.ldap.more_info": "More Info",
+ "admin.ldap.nicknameAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the nickname of users in Mattermost.",
+ "admin.ldap.nicknameAttrDescHover": "When set, users cannot edit their nickname, since it is synchronised with the LDAP server. When left blank, users can set their nickname in Account Menu > Account Settings > Profile.",
"admin.ldap.nicknameAttrEx": "E.g.: 'nickname'",
"admin.ldap.nicknameAttrTitle": "Nickname Attribute:",
"admin.ldap.pictureAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the profile picture in Mattermost.",
@@ -1362,13 +1506,16 @@
"admin.ldap.portDesc": "The port Mattermost will use to connect to the AD/LDAP server. Default is 389.",
"admin.ldap.portEx": "E.g.: '389'",
"admin.ldap.portTitle": "AD/LDAP Port:",
- "admin.ldap.positionAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the position field in Mattermost. When set, users cannot edit their position, since it is synchronised with the LDAP server. When left blank, users can set their position in Profile > Profile Settings.",
+ "admin.ldap.positionAttrDesc": "(Optional) The attribute in the AD/LDAP server used to populate the position field in Mattermost.",
+ "admin.ldap.positionAttrDescHover": "When set, users cannot edit their position, since it is synchronised with the LDAP server. When left blank, users can set their position in Account Menu > Account Settings > Profile.",
"admin.ldap.positionAttrEx": "E.g.: 'title'",
"admin.ldap.positionAttrTitle": "Position Attribute:",
- "admin.ldap.privateKeyFileFileDesc": "The private key file for TLS Certificate. If using TLS client certificates as primary authentication mechanism. This will be provided by your LDAP Authentication Provider.",
+ "admin.ldap.privateKeyFileFileDesc": "The private key file for TLS Certificate.",
+ "admin.ldap.privateKeyFileFileDescHover": "If using TLS client certificates as primary authentication mechanism. This will be provided by your LDAP Authentication Provider.",
"admin.ldap.privateKeyFileFileRemoveDesc": "Remove the private key file for TLS Certificate.",
"admin.ldap.privateKeyFileTitle": "Private Key:",
- "admin.ldap.publicCertificateFileDesc": "The public certificate file for TLS Certificate. If using TLS client certificates as primary authentication mechanism. This will be provided by your LDAP Authentication Provider.",
+ "admin.ldap.publicCertificateFileDesc": "The public certificate file for TLS Certificate.",
+ "admin.ldap.publicCertificateFileDescHover": "If using TLS client certificates as primary authentication mechanism. This will be provided by your LDAP Authentication Provider.",
"admin.ldap.publicCertificateFileRemoveDesc": "Remove the public certificate file for TLS Certificate.",
"admin.ldap.publicCertificateFileTitle": "Public Certificate:",
"admin.ldap.queryDesc": "The timeout value for queries to the AD/LDAP server. Increase if you are getting timeout errors caused by a slow AD/LDAP server.",
@@ -1382,7 +1529,8 @@
"admin.ldap.serverEx": "E.g.: '10.0.0.23'",
"admin.ldap.serverTitle": "AD/LDAP Server:",
"admin.ldap.skipCertificateVerification": "Skip Certificate Verification:",
- "admin.ldap.skipCertificateVerificationDesc": "Skips the certificate verification step for TLS or STARTTLS connections. Skipping certificate verification is not recommended for production environments where TLS is required.",
+ "admin.ldap.skipCertificateVerificationDesc": "Skips the certificate verification step for TLS or STARTTLS connections.",
+ "admin.ldap.skipCertificateVerificationDescHover": "Skipping certificate verification is not recommended for production environments where TLS is required.",
"admin.ldap.syncIntervalHelpText": "AD/LDAP Synchronisation updates Mattermost user information to reflect updates on the AD/LDAP server. For example, when a user's name changes on the AD/LDAP server, the change updates in Mattermost when synchronisation is performed. Accounts removed from or disabled in the AD/LDAP server have their Mattermost accounts set to 'Inactive' and have their account sessions revoked. Mattermost performs synchronisation on the interval entered. For example, if 60 is entered, Mattermost synchronises every 60 minutes.",
"admin.ldap.syncIntervalTitle": "Synchronisation Interval (minutes):",
"admin.ldap.syncNowHelpText": "Initiates an AD/LDAP synchronisation immediately. See the table below for status of each synchronisation. Please review 'System Console > Logs' and documentation to troubleshoot errors.",
@@ -1401,6 +1549,7 @@
"admin.ldap_feature_discovery.copy": "When you connect Mattermost with your organisation's Active Directory/LDAP, users can log in without having to create new usernames and passwords.",
"admin.ldap_feature_discovery.title": "Integrate Active Directory/LDAP with Mattermost Professional",
"admin.ldap_feature_discovery_cloud.call_to_action.primary_sales": "Contact Sales",
+ "admin.ldap_wizard.sections_header": "Sections",
"admin.license.Trial": "Trial",
"admin.license.choose": "Choose File",
"admin.license.confirm-license-removal.cancel": "Cancel",