Some checks are pending
CI / PHP lint (7.4) (pull_request) Waiting to run
CI / PHP lint (8.0) (pull_request) Waiting to run
CI / PHP lint (8.1) (pull_request) Waiting to run
CI / PHP lint (8.2) (pull_request) Waiting to run
CI / PHP lint (8.3) (pull_request) Waiting to run
CI / PHP lint (8.4) (pull_request) Waiting to run
CI / WordPress Coding Standards (pull_request) Waiting to run
CI / WordPress.org Plugin Check (pull_request) Waiting to run
Four-part audit (OIDC/JWT/crypto, user sync, admin UI, login bypasses) with dynamic PoCs against a real WordPress install; every fix is covered by a regression test. Report: docs/security-audit.md, section 6. Critical/High - Multisite: settings, AJAX actions and certificate download require manage_network_options (site admins could sign in as super admin). - Privileged accounts are only linked (sync and first sign-in) via a matching UPN of a member account, never via the settable mail attribute; the sync never changes their e-mail address; e-mail change notifications stay on. - Button-only mode exempts by credential (application passwords, WP-CLI) instead of request context, closing bypasses through xmlrpc.php and REST login handlers; API requests never receive login cookies. - Multi-tenant mode refuses guest/external identities. Medium/Low - Same message for right and wrong passwords; button-only no longer switches off when the connection breaks; server-side fallback cookie expiry; correct fallback key beats IP lockouts; right-most proxy hop; higher start limit; one object ID per account. - Deactivation sets a random password, revokes application passwords and removes the role (restored on reactivation); disabled people are deactivated even when their mail vanished; duplicate bindings handled. - Sync: abort on empty directory answer, no deprovisioning right after a tenant change, atomic run lock, strict photo path validation. - Certificates: key bundles refused, clean re-exported certificate. - Array-safe sanitising, encoded redirect_to, per-action nonces, escaped role lists, no Graph sleeps during sign-in, warnings for public groups, multi-tenant group rules and missing salts, uninstall clears the token. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1634 lines
51 KiB
Text
1634 lines
51 KiB
Text
# Copyright (C) 2026 friloo
|
||
# This file is distributed under the GPL-2.0-or-later.
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: M365 Login 1.1.0\n"
|
||
"Report-Msgid-Bugs-To: https://github.com/friloo/wp-m365-login/issues\n"
|
||
"MIME-Version: 1.0\n"
|
||
"Content-Type: text/plain; charset=UTF-8\n"
|
||
"Content-Transfer-Encoding: 8bit\n"
|
||
"POT-Creation-Date: 2026-09-23T00:00:00+00:00\n"
|
||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||
"X-Generator: bin/make-pot.py\n"
|
||
"X-Domain: m365-login\n"
|
||
|
||
#: includes/class-m365-login-admin.php:108 includes/class-m365-login-admin.php:109 includes/class-m365-login-admin.php:120 includes/class-m365-login-admin.php:778
|
||
msgid "M365 Login"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:135
|
||
msgid "Connection"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:136
|
||
msgid "Button"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:137
|
||
msgid "Security"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:138
|
||
msgid "User sync"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:207
|
||
msgid "M365 Login: button-only mode is on, but the connection to Microsoft is broken (missing or undecryptable secret, or expired certificate). Nobody can sign in except through the fallback link."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:209 includes/class-m365-login-admin.php:227
|
||
msgid "Open the settings"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:225
|
||
msgid "M365 Login is active but not connected to Microsoft Entra ID yet."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:263
|
||
msgid "Choose button icon"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:264
|
||
msgid "Use this icon"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:265
|
||
msgid "Copied!"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:266 includes/class-m365-login-admin.php:904 includes/class-m365-login-admin.php:1171 includes/class-m365-login-admin.php:1216
|
||
msgid "Copy"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:267
|
||
msgid "Testing…"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:268
|
||
msgid "The tenant could not be reached. Check the tenant ID and the server’s outgoing connections."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:269
|
||
msgid "No groups found."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:270
|
||
msgid "Searching…"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:271
|
||
msgid "Add"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:272 includes/class-m365-login-admin.php:528
|
||
msgid "Remove"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:273 includes/class-m365-login-admin.php:336 includes/class-m365-login-admin.php:501
|
||
msgid "Save the connection settings first, then search for groups."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:274
|
||
msgid "Generate a new fallback key on save? The old link stops working."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:275
|
||
msgid "Generating a 3072-bit key pair, this takes a moment…"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:276
|
||
msgid "Replace the stored certificate? Sign-in stops working until the new certificate is uploaded to Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:277
|
||
msgid "Remove the stored certificate when saving? Sign-in with the certificate method stops working."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:278
|
||
msgid "Sync is running, this can take a while for large directories…"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:279
|
||
msgid "Run the sync now with the saved settings? Accounts are created, updated and possibly deactivated or deleted. Tip: run a dry run first."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:280
|
||
msgid "The request failed or timed out. Reload the page in a few minutes to see the report; for very large directories use \"wp m365-login sync\" (WP-CLI)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:281
|
||
msgid "You have unsaved changes. The sync uses the saved settings – save first."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:282 includes/class-m365-login-admin.php:515
|
||
msgid "Move up"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:294 includes/class-m365-login-admin.php:333 includes/class-m365-login-admin.php:359 includes/class-m365-login-admin.php:392 includes/class-m365-login-admin.php:566 includes/class-m365-login-sync.php:1775
|
||
msgid "You are not allowed to do this."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:299
|
||
msgid "Please enter a valid tenant ID first."
|
||
msgstr ""
|
||
|
||
#. translators: %d: HTTP status code
|
||
#: includes/class-m365-login-admin.php:313
|
||
msgid "Microsoft answered with HTTP %d. Is the tenant ID correct?"
|
||
msgstr ""
|
||
|
||
#. translators: %d: HTTP status code
|
||
#: includes/class-m365-login-admin.php:322
|
||
msgid "Tenant reachable. The OpenID configuration was loaded successfully."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:345
|
||
msgid "Microsoft Graph refused the request. Grant the application permission \"GroupMember.Read.All\" (or \"Directory.Read.All\") with admin consent in Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:363
|
||
msgid "Unknown operation."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:380
|
||
msgid "Certificate generated and stored. Download the .cer file and upload it in Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:407
|
||
msgid "The sync has not run yet."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:411
|
||
msgid "Finished"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:412
|
||
msgid "Failed"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:413
|
||
msgid "Stopped by the safety limit"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:414
|
||
msgid "Not started"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:417
|
||
msgid "started manually"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:418
|
||
msgid "scheduled"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:419
|
||
msgid "WP-CLI"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:422
|
||
msgid "would be created"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:422
|
||
msgid "created"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:423
|
||
msgid "would be updated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:423
|
||
msgid "updated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:424
|
||
msgid "would be linked"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:424
|
||
msgid "linked"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:425
|
||
msgid "unchanged"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:426
|
||
msgid "would be deactivated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:426
|
||
msgid "deactivated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:427
|
||
msgid "would be reactivated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:427
|
||
msgid "reactivated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:428
|
||
msgid "would be deleted"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:428
|
||
msgid "deleted"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:429
|
||
msgid "photos"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:430
|
||
msgid "skipped"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:431
|
||
msgid "errors"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:444
|
||
msgid "Dry run – nothing was changed"
|
||
msgstr ""
|
||
|
||
#. translators: 1: date and time, 2: how the run was started, 3: duration in seconds
|
||
#: includes/class-m365-login-admin.php:449
|
||
msgid "%1$s, %2$s, %3$d s"
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of log entries
|
||
#: includes/class-m365-login-admin.php:467
|
||
msgid "Log (%d entry)"
|
||
msgid_plural "Log (%d entries)"
|
||
msgstr[0] ""
|
||
msgstr[1] ""
|
||
|
||
#: includes/class-m365-login-admin.php:495
|
||
msgid "Search groups"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:497
|
||
msgid "Type a group name or paste an object ID…"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:498
|
||
msgid "Search"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:503
|
||
msgid "Needs the application permission \"GroupMember.Read.All\" with admin consent. Without it you can still paste group object IDs."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:509
|
||
msgid "Selected groups"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:521
|
||
msgid "WordPress role"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:572
|
||
msgid "No certificate is stored."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:597
|
||
msgid "Do nothing"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:598
|
||
msgid "Deactivate the WordPress account"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:599
|
||
msgid "Delete the WordPress account"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:602
|
||
msgid "Account disabled in Microsoft 365 (sign-in blocked)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:603
|
||
msgid "Account deleted in Microsoft 365"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:604
|
||
msgid "No longer a member of the sync groups"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:609
|
||
msgid "Import users from Microsoft 365"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:610
|
||
msgid "Creates a WordPress account for every Microsoft 365 user in scope, links existing accounts by e-mail address, keeps roles and profile fields up to date and deactivates or deletes accounts that were disabled or removed in Microsoft 365. New accounts get a random password and no e-mail; people sign in with the Microsoft button."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:615
|
||
msgid "Run the sync automatically"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:616
|
||
msgid "Uses WP-Cron, which runs when the site receives visits. For exact timing, trigger wp-cron.php from a real cron job or run \"wp m365-login sync\"."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:622
|
||
msgid "Interval"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:624
|
||
msgid "Hourly"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:625
|
||
msgid "Twice daily"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:626
|
||
msgid "Daily"
|
||
msgstr ""
|
||
|
||
#. translators: %s: date and time
|
||
#: includes/class-m365-login-admin.php:630
|
||
msgid "Next run: %s"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:638
|
||
msgid "Also import guest users (B2B)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:639
|
||
msgid "Guests are external people invited into your tenant. Off by default."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:643
|
||
msgid "Which users? (optional)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:644
|
||
msgid "Limit the import to members of these groups (nested memberships count). Without groups, every user of the tenant is imported. The e-mail domain allow-list on the Security tab applies as well."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:645
|
||
msgid "No groups selected – all users of the tenant are imported."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:649
|
||
msgid "Roles"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:652
|
||
msgid "Default role"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:656
|
||
msgid "Every imported user gets this role. The sync manages the roles of imported accounts – manual role changes are overwritten on the next run."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:659
|
||
msgid "Additional roles from Microsoft 365 groups"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:660
|
||
msgid "Members of a group (nested memberships count) get the role next to it. If a person leaves the group, the role is removed again on the next sync."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:661
|
||
msgid "Whoever can change a group's members controls the mapped role. For roles with administrative rights use security groups (ideally role-assignable ones) – never public Microsoft 365 groups or Teams, which members can join themselves."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:662
|
||
msgid "No group mapping – everybody gets the default role."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:665
|
||
msgid "How are mapped roles applied?"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:668
|
||
msgid "In addition to the default role (a user can have several roles)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:672
|
||
msgid "Instead of the default role – the first matching group in the list wins (use ↑ to reorder)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:679
|
||
msgid "Also manage the roles of accounts that existed before the sync"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:680
|
||
msgid "Off: existing accounts are only linked and get their profile fields updated; their roles stay as they are. Administrators that existed before the sync and your own account are never changed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:686
|
||
msgid "Profile fields"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:687
|
||
msgid "Selected Microsoft 365 attributes are copied into the WordPress profile on every sync (Microsoft 365 wins). Name fields go into the standard profile fields, everything else into user meta keys starting with \"m365_\" – usable by themes and other plugins – and is shown on the profile screen."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:696
|
||
msgid "Profile photos are stored in wp-content/uploads/m365-login-avatars/ and replace the Gravatar. They are compared on every run: changed photos are downloaded again, photos deleted in Microsoft 365 are deleted in WordPress too. Fields and photos you deselect here are removed from the profiles on the next run (first and last name and display name stay)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:700
|
||
msgid "Disabled and deleted Microsoft 365 accounts"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:701
|
||
msgid "Applies to WordPress accounts linked to a Microsoft account (imported, or signed in with Microsoft at least once). Deactivated accounts cannot sign in at all – not with Microsoft, a password or an application password – and are signed out immediately. When the person is active in Microsoft 365 again, the sync reactivates the account."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:712
|
||
msgid "Only relevant when the import is limited to groups."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:718
|
||
msgid "Posts of deleted accounts go to"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:726
|
||
msgid "— Select a user —"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:733
|
||
msgid "Required for \"Delete\". Without a user, accounts are deactivated instead, so no content is ever lost."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:736
|
||
msgid "Safety stop: if a run would deactivate or delete more than 20 % of the linked accounts (at least 5), nothing is deactivated or deleted and the run is reported as stopped. A failed Microsoft Graph request also stops the run before anything is deactivated."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:740
|
||
msgid "Run the sync"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:741
|
||
msgid "The run uses the saved settings. Start with a dry run: it reads Microsoft 365 and lists what would change, without changing anything."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:743
|
||
msgid "Dry run"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:744
|
||
msgid "Sync now"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:746
|
||
msgid "Required application permissions (Microsoft Graph, admin consent): User.Read.All, and GroupMember.Read.All when groups are used."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:760
|
||
msgid "You are not allowed to access this page."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:779
|
||
msgid "Let existing users sign in with their Microsoft 365 / Entra ID account."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:784
|
||
msgid "Connected"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:784
|
||
msgid "Setup incomplete"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:806
|
||
msgid "Microsoft Entra ID app registration"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:807
|
||
msgid "Enter the values from your app registration in the Microsoft Entra admin center."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:810
|
||
msgid "Directory (tenant) ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:813
|
||
msgid "Test tenant"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:815
|
||
msgid "Recommended: the GUID of your tenant. Only sign-ins from this tenant are accepted. \"organizations\" allows any work or school account."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:817
|
||
msgid "Multi-tenant mode: accounts from any Microsoft tenant can sign in. Their \"email\" attribute is not verified, so the plugin matches on the user principal name (verified domain) only and ignores the e-mail claim unless Microsoft marks it as domain-verified. Use the e-mail domain allow-list on the Security tab, or better, pin your tenant GUID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:823
|
||
msgid "Application (client) ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:828
|
||
msgid "How should WordPress authenticate to Microsoft?"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:833 includes/class-m365-login-admin.php:850
|
||
msgid "Client secret"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:834
|
||
msgid "Quick to set up. A password-like value created in Entra ID that expires after 6–24 months and must be renewed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:840
|
||
msgid "Certificate"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:840
|
||
msgid "Recommended"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:841
|
||
msgid "The private key never leaves this server; only the public certificate is uploaded to Entra ID. Generated here with one click, valid for 2 years."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:852
|
||
msgid "•••••••••••• (stored, leave empty to keep)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:852
|
||
msgid "Paste the secret value"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:853
|
||
msgid "Show secret"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:858
|
||
msgid "Remove the stored secret"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:861
|
||
msgid "Stored encrypted (AES-256-GCM, key derived from your WordPress salts) and never displayed again. Client secrets expire – note the expiry date in Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:863
|
||
msgid "AUTH_KEY and SECURE_AUTH_KEY are not defined in wp-config.php, so WordPress keeps its salts in the database – right next to the encrypted secret. Add the salts to wp-config.php to make the encryption effective."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:868
|
||
msgid "Step-by-step: create a client secret in Entra ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:871
|
||
msgid "Open entra.microsoft.com and sign in with an account that has the \"Application Administrator\" or \"Global Administrator\" role."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:872
|
||
msgid "Go to Identity → Applications → App registrations and open your app (or create it first, see the general guide in the sidebar)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:873
|
||
msgid "In the left menu choose Certificates & secrets, then the tab Client secrets, and click New client secret."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:874
|
||
msgid "Enter a description such as \"WordPress login\" and pick an expiry. Microsoft allows at most 24 months; put a reminder in your calendar two weeks before."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:875
|
||
msgid "Click Add. Copy the Value column immediately – it is shown only once. The Secret ID column is NOT what you need."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:876
|
||
msgid "Paste the value into the Client secret field above and save this page."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:878
|
||
msgid "When the secret expires, sign-ins fail with \"Could not complete the sign-in with Microsoft\". Create a new secret, paste it here, save, then delete the old one in Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:891
|
||
msgid "Expired"
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of days
|
||
#: includes/class-m365-login-admin.php:895
|
||
msgid "Expires in %d days"
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of days
|
||
#: includes/class-m365-login-admin.php:898
|
||
msgid "Valid"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:903
|
||
msgid "Thumbprint (SHA-1)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:905
|
||
msgid "Subject"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:907
|
||
msgid "Key size"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:909
|
||
msgid "Valid until"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:913
|
||
msgid "Download certificate (.cer)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:914
|
||
msgid "Generate new certificate"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:917
|
||
msgid "Remove certificate when saving"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:921
|
||
msgid "No certificate stored yet."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:923
|
||
msgid "Generate certificate"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:924
|
||
msgid "3072-bit RSA, self-signed, valid for 2 years. The private key is stored encrypted and never shown or downloadable."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:928
|
||
msgid "Use your own certificate instead (paste PEM)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:931
|
||
msgid "Private key (PEM, unencrypted)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:935
|
||
msgid "Certificate (PEM)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:937
|
||
msgid "RSA, at least 2048 bits. The pair is validated and the key is encrypted when you save. Both fields stay empty afterwards."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:943
|
||
msgid "Step-by-step: register the certificate in Entra ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:946
|
||
msgid "Click Generate certificate above (or paste your own). Then click Download certificate (.cer) – the file contains only the public part."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:947
|
||
msgid "Open entra.microsoft.com → Identity → Applications → App registrations and open your app."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:948
|
||
msgid "Choose Certificates & secrets in the left menu, then the tab Certificates, and click Upload certificate."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:949
|
||
msgid "Select the downloaded .cer file, add a description such as \"WordPress login\" and click Add."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:950
|
||
msgid "Compare the thumbprint Entra ID shows with the thumbprint above – they must match exactly."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:951
|
||
msgid "Make sure Certificate is selected above and save this page. If a client secret was stored before, you may delete it in Entra ID now."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:953
|
||
msgid "How it works: for every token request WordPress signs a short-lived JWT (client assertion) with the private key; Microsoft verifies it with the uploaded certificate. Nothing secret is ever transmitted."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:954
|
||
msgid "Before the certificate expires: generate a new one here, upload it to Entra ID (both may be registered at the same time), save, then remove the old one from Entra ID. Sign-ins keep working during the switch."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:960
|
||
msgid "Account prompt"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:962
|
||
msgid "Always let the user pick an account (recommended)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:963
|
||
msgid "Use the current Microsoft session if available"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:964
|
||
msgid "Always require re-entering credentials"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:973
|
||
msgid "Appearance"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:976
|
||
msgid "Live preview"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:990
|
||
msgid "Button text"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:994
|
||
msgid "Divider text"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:996
|
||
msgid "Leave empty to hide the divider line."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1001
|
||
msgid "Icon"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1004
|
||
msgid "Show an icon on the button"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1015
|
||
msgid "Default: Microsoft logo"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1017
|
||
msgid "Choose from media library"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1018
|
||
msgid "Use Microsoft logo"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1020
|
||
msgid "PNG, SVG, JPG or WebP. Square images (e.g. 64×64 px) work best."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1028
|
||
msgid "Background"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1029
|
||
msgid "Background (hover)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1030
|
||
msgid "Text colour"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1031
|
||
msgid "Border"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1044
|
||
msgid "Corner radius"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1048
|
||
msgid "Position on the login page"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1050
|
||
msgid "Below the login form"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1051
|
||
msgid "Above the login form"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1057
|
||
msgid "Quick presets"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1058
|
||
msgid "Microsoft dark"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1059
|
||
msgid "Microsoft light"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1060
|
||
msgid "Azure blue"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1061
|
||
msgid "WordPress blue"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1065
|
||
msgid "Custom login page"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1066
|
||
msgid "Using your own login page instead of wp-login.php? Tell the plugin where it is so error messages, the fallback link and the post-logout redirect point there."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1069
|
||
msgid "URL of your login page"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1071
|
||
msgid "Must be on this site. Leave empty to use wp-login.php."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1077
|
||
msgid "Add the button to every wp_login_form() form automatically"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1078
|
||
msgid "Covers themes and plugins that use the WordPress login form function. Page-builder widgets need the shortcode or the template function below."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1083
|
||
msgid "Manual placement"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1084
|
||
msgid "Shortcode (block editor, page builders):"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1086
|
||
msgid "Template function (theme files):"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1088
|
||
msgid "Both show the error messages of the last attempt; use m365_login_messages() to place them separately."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1096
|
||
msgid "User matching & hardening"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1097
|
||
msgid "Sign-in never creates users. A Microsoft sign-in only succeeds when a WordPress user with the same e-mail address already exists – created by hand or imported by the user sync."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1102
|
||
msgid "Bind WordPress accounts to the Microsoft object ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1103
|
||
msgid "On first sign-in the immutable Microsoft object ID is stored with the user. Later sign-ins with the same e-mail but a different Microsoft identity are rejected. Strongly recommended."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1110
|
||
msgid "Fall back to the user principal name (UPN)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1111
|
||
msgid "If the token contains no \"email\" claim, use the UPN (e.g. jane@contoso.com) when it is a valid e-mail address. Usually required for work accounts."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1118
|
||
msgid "Keep users signed in (\"Remember me\")"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1119
|
||
msgid "Issues a 14-day WordPress session instead of a browser session."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1124
|
||
msgid "Allowed e-mail domains (optional)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1126
|
||
msgid "One or more domains separated by commas or new lines. Leave empty to allow any domain of your tenant."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1131
|
||
msgid "Allowed Entra groups (optional)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1132
|
||
msgid "Only members of at least one of these groups may sign in. Leave empty to allow every matched user. Nested memberships count."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1134
|
||
msgid "No groups selected – every matched user may sign in."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1136
|
||
msgid "Membership is read from the \"groups\" claim of the ID token when present; otherwise the plugin asks Microsoft Graph (application permission \"User.Read.All\" or \"Directory.Read.All\"). If neither works, the sign-in is refused."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1141
|
||
msgid "Excluded Entra groups (optional)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1142
|
||
msgid "Members of these groups can never sign in with Microsoft – even if they are in an allowed group. Nested memberships count."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1145
|
||
msgid "Group rules need a pinned tenant ID (GUID) on the Connection tab. In multi-tenant mode the group check cannot ask Microsoft Graph, so every sign-in is refused while groups are selected here or above."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1147
|
||
msgid "No groups excluded."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1149
|
||
msgid "The plugin asks Microsoft Graph on every sign-in (application permission \"User.Read.All\" or \"Directory.Read.All\"), because a \"groups\" claim may be filtered and cannot prove that someone is not a member. If the check fails, the sign-in is refused. Password sign-in is not affected – combine with button-only mode if needed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1154
|
||
msgid "Button-only mode"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1155
|
||
msgid "Hides the username/password fields (on wp-login.php and in wp_login_form() forms) and refuses every sign-in with a normal password on the site – custom login forms, XML-RPC and login endpoints of other plugins included. Application passwords (REST, XML-RPC) and WP-CLI keep working; API requests never receive a login cookie."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1160
|
||
msgid "Show only the Microsoft button on the login page"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1161
|
||
msgid "Becomes active once the connection is configured. Make sure your own account can sign in via Microsoft before enabling this."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1166
|
||
msgid "Fallback link (keep it secret)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1167
|
||
msgid "Opening this link shows the password form again in that browser for 30 minutes and allows password sign-in there. Bookmark it somewhere safe – it is your way back in if Microsoft sign-in ever breaks."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1175
|
||
msgid "Generate a new key when saving"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1178
|
||
msgid "A key is generated automatically the first time you save these settings."
|
||
msgstr ""
|
||
|
||
#. translators: %s: PHP constant
|
||
#: includes/class-m365-login-admin.php:1184
|
||
msgid "Emergency switch: add %s to wp-config.php to disable button-only mode entirely."
|
||
msgstr ""
|
||
|
||
#. translators: %s: PHP constant
|
||
#: includes/class-m365-login-admin.php:1193
|
||
msgid "What the plugin does to keep sign-ins safe"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1195
|
||
msgid "OpenID Connect authorization code flow with PKCE (S256) – no tokens ever pass through the browser."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1196
|
||
msgid "Single-use state and nonce values bound to the browser via an HttpOnly cookie (CSRF and replay protection)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1197
|
||
msgid "ID token signature verified against Microsoft’s published signing keys; issuer, audience, tenant, expiry and nonce are checked."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1198
|
||
msgid "Client secret encrypted at rest; sign-in never creates accounts or changes passwords."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1206
|
||
msgid "Save changes"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1212
|
||
msgid "Redirect URI"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1213
|
||
msgid "Register this URI in your app registration under Authentication → Web → Redirect URIs:"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1219
|
||
msgid "Plain permalinks are active, so the callback uses a query string. If you enable pretty permalinks later, the redirect URI changes and must be updated in Entra ID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1222
|
||
msgid "Your site does not use HTTPS. Microsoft only accepts http:// redirect URIs for localhost; production sites must use HTTPS."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1227
|
||
msgid "Setup guide: app registration"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1229
|
||
msgid "Open entra.microsoft.com → Identity → Applications → App registrations → New registration."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1230
|
||
msgid "Name: e.g. \"WordPress login\". Supported account types: \"Accounts in this organizational directory only\" (single tenant)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1231
|
||
msgid "Redirect URI: choose the platform Web and paste the URI shown above. Then click Register."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1232
|
||
msgid "On the Overview page copy the Application (client) ID and the Directory (tenant) ID into the Connection tab."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1233
|
||
msgid "Authentication: leave \"ID tokens\" unchecked (the plugin uses the authorization code flow) and \"Allow public client flows\" on No."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1234
|
||
msgid "Token configuration → Add optional claim → ID → tick \"email\" → Add. Confirm the API permission prompt."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1235
|
||
msgid "Pick the authentication method on the Connection tab and follow its step-by-step guide (client secret or certificate)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1236
|
||
msgid "Optional: restrict who may use the app under Enterprise applications → your app → Properties → \"Assignment required\" = Yes, then assign users/groups."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1238
|
||
msgid "Required API permission: openid, profile, email (delegated) – granted by default."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1239
|
||
msgid "Optional, for group restrictions and the user sync: application permissions GroupMember.Read.All and User.Read.All (Microsoft Graph) with admin consent."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1243
|
||
msgid "Shortcode"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1244
|
||
msgid "Place the button on a custom login page:"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-admin.php:1246
|
||
msgid "More options on the Button tab under \"Custom login page\"."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:182
|
||
msgid "Password sign-in is disabled on this site. Please use the Microsoft button."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:998
|
||
msgid "Microsoft sign-in is temporarily unavailable. Please contact an administrator."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1005
|
||
msgid "Password sign-in is temporarily enabled for this browser (30 minutes)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1026 includes/class-m365-login-graph.php:63
|
||
msgid "Microsoft login is not configured yet."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1027
|
||
msgid "The login request expired or was invalid. Please try again."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1028
|
||
msgid "Microsoft sign-in was cancelled."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1029
|
||
msgid "Microsoft returned an error. Please try again."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1030
|
||
msgid "Could not complete the sign-in with Microsoft. Please try again or contact an administrator."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1031
|
||
msgid "The Microsoft sign-in could not be verified."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1032
|
||
msgid "Your Microsoft account did not provide an e-mail address."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1033
|
||
msgid "Your e-mail domain is not allowed to sign in here."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1034
|
||
msgid "No WordPress account exists for your Microsoft e-mail address."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1035
|
||
msgid "This WordPress account is linked to a different Microsoft account. Please contact an administrator."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1036
|
||
msgid "You are not allowed to sign in with this account."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1037
|
||
msgid "Your Microsoft account is not a member of a group that is allowed to sign in here."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1038
|
||
msgid "Your group membership could not be verified. Please contact an administrator."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1039
|
||
msgid "Your Microsoft account is a member of a group that is not allowed to sign in here."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1040
|
||
msgid "The fallback key is not valid."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1041
|
||
msgid "Too many attempts. Please wait 15 minutes."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1042
|
||
msgid "Too many sign-in attempts from your connection. Please wait a few minutes and try again."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1043 includes/class-m365-login-sync.php:1684
|
||
msgid "This account has been deactivated."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1044
|
||
msgid "For security reasons this administrator account can only be linked to a Microsoft account whose user principal name equals the WordPress e-mail address. Please contact an administrator."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-auth.php:1045
|
||
msgid "Guest and external accounts cannot sign in here."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:29
|
||
msgid "The PHP OpenSSL extension is not available."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:42
|
||
msgid "Key generation failed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:51
|
||
msgid "Certificate request failed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:56
|
||
msgid "Certificate signing failed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:62
|
||
msgid "Exporting the certificate failed."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:83
|
||
msgid "The private key must be in PEM format (-----BEGIN PRIVATE KEY-----)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:86
|
||
msgid "Password protected private keys are not supported. Export the key without a passphrase."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:90
|
||
msgid "The private key could not be read."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:94
|
||
msgid "Only RSA keys are supported."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:97
|
||
msgid "The RSA key must have at least 2048 bits."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:101
|
||
msgid "The certificate field contains a private key. Paste only the certificate (-----BEGIN CERTIFICATE-----) there."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:105 includes/class-m365-login-certificate.php:119
|
||
msgid "The certificate could not be read. Paste it in PEM format (-----BEGIN CERTIFICATE-----)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:108
|
||
msgid "The certificate does not belong to this private key."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-certificate.php:113
|
||
msgid "The certificate has already expired."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-graph.php:436
|
||
msgid "Group"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-graph.php:438
|
||
msgid "Security group"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-graph.php:440
|
||
msgid "Microsoft 365 group"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-graph.php:444
|
||
msgid "Public Microsoft 365 group – anyone in the organisation can join"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:55
|
||
msgid "Sign in with Microsoft"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:64
|
||
msgid "or"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:226 includes/class-m365-login-settings.php:543
|
||
msgid "The private key could not be encrypted. Is the OpenSSL extension available?"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:489
|
||
msgid "The tenant ID must be a GUID (e.g. 1a2b3c4d-…) or one of \"organizations\", \"common\", \"consumers\"."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:497
|
||
msgid "The application (client) ID must be a GUID."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:509
|
||
msgid "The client secret contains invalid characters."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:513
|
||
msgid "The client secret could not be encrypted. Is the OpenSSL extension available?"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:533
|
||
msgid "Please paste both the private key and the certificate."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:535
|
||
msgid "The pasted key or certificate is too large."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:552
|
||
msgid "Certificate authentication is selected but no certificate is stored yet. Generate one or paste your own; the Microsoft button stays hidden until then."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:585
|
||
msgid "The custom login page must be a URL on this site."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-settings.php:692
|
||
msgid "User sync: \"Delete\" needs a user who receives the posts of deleted accounts. Until one is selected, accounts are deactivated instead."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:119
|
||
msgid "Display name"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:123
|
||
msgid "First name"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:127
|
||
msgid "Last name"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:131
|
||
msgid "Profile photo (used as avatar)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:135
|
||
msgid "Job title"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:139
|
||
msgid "Department"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:143
|
||
msgid "Company"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:147
|
||
msgid "Office"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:151
|
||
msgid "Employee ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:155
|
||
msgid "Business phone"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:159
|
||
msgid "Mobile phone"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:163
|
||
msgid "Street address"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:167
|
||
msgid "Postal code"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:171
|
||
msgid "City"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:175
|
||
msgid "State / province"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:179
|
||
msgid "Country"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:183
|
||
msgid "Language (sets the admin language if installed)"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:319
|
||
msgid "Another sync is still running. Please try again in a few minutes."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:405
|
||
msgid "The connection to Microsoft Entra ID is not configured yet."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:409
|
||
msgid "The user sync needs a pinned tenant ID (GUID) on the Connection tab."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:413
|
||
msgid "The default role does not exist. Please check the sync settings."
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of users
|
||
#: includes/class-m365-login-sync.php:425
|
||
msgid "%d user read from Microsoft 365."
|
||
msgid_plural "%d users read from Microsoft 365."
|
||
msgstr[0] ""
|
||
msgstr[1] ""
|
||
|
||
#: includes/class-m365-login-sync.php:436
|
||
msgid "Microsoft 365 returned no users at all while accounts are linked. Nothing was changed. Check the tenant and the sync groups."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:484
|
||
msgid "The tenant ID changed since the last sync. Accounts linked in the old tenant are not found in the new one, so no account was deactivated or deleted in this run. Run the sync again to apply deactivations."
|
||
msgstr ""
|
||
|
||
#. translators: 1: number of accounts, 2: limit
|
||
#: includes/class-m365-login-sync.php:496
|
||
msgid "Safety stop: %1$d accounts would be deactivated or deleted, more than the limit of %2$d per run. No account was deactivated or deleted. Check the sync groups and the tenant, then run the sync again (the limit can be changed with the m365_login_sync_deprovision_limit filter)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:621 includes/class-m365-login-sync.php:674 includes/class-m365-login-sync.php:1028 includes/class-m365-login-sync.php:1816
|
||
msgid "disabled in Microsoft 365"
|
||
msgstr ""
|
||
|
||
#. translators: %s: user principal name
|
||
#: includes/class-m365-login-sync.php:632
|
||
msgid "%s: no usable e-mail address, skipped."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:639
|
||
msgid "%s: e-mail domain is not on the allow-list, skipped."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:651
|
||
msgid "%s: the WordPress account with this e-mail address is linked to a different Microsoft account, skipped."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:656
|
||
msgid "%s: privileged WordPress account – it is only linked when the Microsoft user principal name equals its e-mail address (member account, no guest). Skipped."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:660
|
||
msgid "%s: existing account linked."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:685
|
||
msgid "%s: added to this site."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:694
|
||
msgid "%s: reactivated (active in Microsoft 365 again)."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: list of changed fields
|
||
#: includes/class-m365-login-sync.php:705
|
||
msgid "%1$s: updated (%2$s)."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: role names
|
||
#: includes/class-m365-login-sync.php:731
|
||
msgid "%1$s: account created (%2$s)."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: error message
|
||
#: includes/class-m365-login-sync.php:758
|
||
msgid "%1$s: account could not be created: %2$s"
|
||
msgstr ""
|
||
|
||
#. translators: 1: current e-mail address, 2: e-mail address in Microsoft 365
|
||
#: includes/class-m365-login-sync.php:816
|
||
msgid "%1$s: the e-mail address in Microsoft 365 changed to %2$s. It is not changed automatically for privileged accounts – update it by hand if intended."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:819
|
||
msgid "%s: e-mail address is used by another WordPress account and was not changed."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:822
|
||
msgid "e-mail"
|
||
msgstr ""
|
||
|
||
#. translators: %s: profile field
|
||
#: includes/class-m365-login-sync.php:872
|
||
msgid "%s removed"
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: error message
|
||
#: includes/class-m365-login-sync.php:882
|
||
msgid "%1$s: profile could not be updated: %2$s"
|
||
msgstr ""
|
||
|
||
#. translators: %s: role names
|
||
#: includes/class-m365-login-sync.php:988
|
||
msgid "roles: %s"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1023 includes/class-m365-login-sync.php:1817
|
||
msgid "deleted in Microsoft 365"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1031 includes/class-m365-login-sync.php:1818
|
||
msgid "no longer a member of the sync groups"
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: reason
|
||
#: includes/class-m365-login-sync.php:1063
|
||
msgid "%1$s: %2$s, but the account is protected (administrator or your own account) and was not changed."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:1140
|
||
msgid "%s: no valid user to receive the content is selected, so the account is deactivated instead of deleted."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: reason
|
||
#: includes/class-m365-login-sync.php:1149
|
||
msgid "%1$s: account deleted (%2$s)."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: reason
|
||
#: includes/class-m365-login-sync.php:1158
|
||
msgid "%1$s: account deactivated (%2$s)."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1237
|
||
msgid "Microsoft Graph refused the request. Grant the application permissions \"User.Read.All\" and \"GroupMember.Read.All\" with admin consent in Entra ID."
|
||
msgstr ""
|
||
|
||
#. translators: %s: error message
|
||
#: includes/class-m365-login-sync.php:1240
|
||
msgid "Microsoft Graph error: %s"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1258
|
||
msgid "Log truncated."
|
||
msgstr ""
|
||
|
||
#. translators: 1: e-mail address, 2: error message
|
||
#: includes/class-m365-login-sync.php:1334
|
||
msgid "%1$s: profile photo could not be read: %2$s"
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:1358 includes/class-m365-login-sync.php:1401
|
||
msgid "%s: profile photo updated."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:1377
|
||
msgid "%s: profile photo could not be downloaded."
|
||
msgstr ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:1384
|
||
msgid "%s: profile photo is not a valid image or could not be saved."
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of photos
|
||
#: includes/class-m365-login-sync.php:1407
|
||
msgid "%d changed profile photo will be downloaded in the next run (download limit per run reached)."
|
||
msgid_plural "%d changed profile photos will be downloaded in the next run (download limit per run reached)."
|
||
msgstr[0] ""
|
||
msgstr[1] ""
|
||
|
||
#. translators: %s: e-mail address
|
||
#: includes/class-m365-login-sync.php:1422
|
||
msgid "%s: profile photo removed."
|
||
msgstr ""
|
||
|
||
#. translators: %d: number of photos
|
||
#: includes/class-m365-login-sync.php:1450
|
||
msgid "Profile photo sync is off: %d stored photo removed."
|
||
msgid_plural "Profile photo sync is off: %d stored photos removed."
|
||
msgstr[0] ""
|
||
msgstr[1] ""
|
||
|
||
#: includes/class-m365-login-sync.php:1713 includes/class-m365-login-sync.php:1846
|
||
msgid "Microsoft 365"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1731
|
||
msgid "Deactivated"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1734
|
||
msgid "Imported"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1736
|
||
msgid "Linked"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1764
|
||
msgid "Reactivate"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1764
|
||
msgid "Deactivate"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1797
|
||
msgid "The account has been deactivated and signed out everywhere."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1798
|
||
msgid "The account has been reactivated."
|
||
msgstr ""
|
||
|
||
#. translators: 1: date, 2: reason
|
||
#: includes/class-m365-login-sync.php:1822
|
||
msgid "Deactivated since %1$s (%2$s)"
|
||
msgstr ""
|
||
|
||
#. translators: 1: date, 2: reason
|
||
#: includes/class-m365-login-sync.php:1824
|
||
msgid "manually"
|
||
msgstr ""
|
||
|
||
#. translators: 1: date, 2: reason
|
||
#: includes/class-m365-login-sync.php:1826
|
||
msgid "Status"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1829
|
||
msgid "Object ID"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1833
|
||
msgid "Last sync"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login-sync.php:1855
|
||
msgid "These values are managed by the Microsoft 365 user sync and overwritten on the next run."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login.php:110
|
||
msgid "Settings"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login.php:121
|
||
msgid "M365 Login requires PHP 7.4 or newer."
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login.php:122 includes/class-m365-login.php:131
|
||
msgid "Plugin activation failed"
|
||
msgstr ""
|
||
|
||
#: includes/class-m365-login.php:130
|
||
msgid "M365 Login requires the PHP OpenSSL extension (needed to verify Microsoft token signatures and to encrypt the client secret)."
|
||
msgstr ""
|
||
|