wp-m365-login/languages/m365-login.pot
Friederich Loheide 850f0dcd54
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
Fix the findings of a full second security audit
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>
2026-09-23 17:10:30 +00:00

1634 lines
51 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 servers 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 624 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 Microsofts 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 ""