wp-m365-login/languages/m365-login.pot
friloo 8766927123
Add certificate authentication, in-app setup guides and security audit
Certificate (RFC 7523 client assertion) as an alternative to the client
secret: one-click generation of a 3072-bit RSA key pair with a
self-signed certificate, .cer download (public part only), own PEM
upload with validation, expiry display, encrypted key storage. Both the
authorization code exchange and the Graph client-credentials request
use the selected method. Step-by-step guides for secret, certificate
and the app registration are shown in the settings.

Security audit (docs/security-audit.md) and fixes:
- Multi-tenant mode ignored the unverified email claim: matching now
  uses the UPN only, or the email claim when xms_edov is true.
- Login starts are rate limited per client (30 per 10 minutes).
- Optional trusted proxy header for client IPs
  (M365_LOGIN_CLIENT_IP_HEADER / filter).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJxAHYdMfKPoN4koRc4Ci2
2026-09-22 15:04:32 +00:00

918 lines
28 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.0.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-22T00: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:79 includes/class-m365-login-admin.php:80 includes/class-m365-login-admin.php:315
msgid "M365 Login"
msgstr ""
#: includes/class-m365-login-admin.php:118
msgid "M365 Login is active but not connected to Microsoft Entra ID yet."
msgstr ""
#: includes/class-m365-login-admin.php:120
msgid "Open the settings"
msgstr ""
#: includes/class-m365-login-admin.php:150
msgid "Choose button icon"
msgstr ""
#: includes/class-m365-login-admin.php:151
msgid "Use this icon"
msgstr ""
#: includes/class-m365-login-admin.php:152
msgid "Copied!"
msgstr ""
#: includes/class-m365-login-admin.php:153 includes/class-m365-login-admin.php:435 includes/class-m365-login-admin.php:713 includes/class-m365-login-admin.php:756
msgid "Copy"
msgstr ""
#: includes/class-m365-login-admin.php:154
msgid "Testing…"
msgstr ""
#: includes/class-m365-login-admin.php:155
msgid "The tenant could not be reached. Check the tenant ID and the servers outgoing connections."
msgstr ""
#: includes/class-m365-login-admin.php:156
msgid "No groups found."
msgstr ""
#: includes/class-m365-login-admin.php:157
msgid "Searching…"
msgstr ""
#: includes/class-m365-login-admin.php:158
msgid "Add"
msgstr ""
#: includes/class-m365-login-admin.php:159 includes/class-m365-login-admin.php:687
msgid "Remove"
msgstr ""
#: includes/class-m365-login-admin.php:160 includes/class-m365-login-admin.php:218 includes/class-m365-login-admin.php:672
msgid "Save the connection settings first, then search for groups."
msgstr ""
#: includes/class-m365-login-admin.php:161
msgid "Generate a new fallback key on save? The old link stops working."
msgstr ""
#: includes/class-m365-login-admin.php:162
msgid "Generating a 3072-bit key pair, this takes a moment…"
msgstr ""
#: includes/class-m365-login-admin.php:163
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:164
msgid "Remove the stored certificate when saving? Sign-in with the certificate method stops working."
msgstr ""
#: includes/class-m365-login-admin.php:176 includes/class-m365-login-admin.php:215 includes/class-m365-login-admin.php:241 includes/class-m365-login-admin.php:273
msgid "You are not allowed to do this."
msgstr ""
#: includes/class-m365-login-admin.php:181
msgid "Please enter a valid tenant ID first."
msgstr ""
#. translators: %d: HTTP status code
#: includes/class-m365-login-admin.php:195
msgid "Microsoft answered with HTTP %d. Is the tenant ID correct?"
msgstr ""
#. translators: %d: HTTP status code
#: includes/class-m365-login-admin.php:204
msgid "Tenant reachable. The OpenID configuration was loaded successfully."
msgstr ""
#: includes/class-m365-login-admin.php:227
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:245
msgid "Unknown operation."
msgstr ""
#: includes/class-m365-login-admin.php:262
msgid "Certificate generated and stored. Download the .cer file and upload it in Entra ID."
msgstr ""
#: includes/class-m365-login-admin.php:279
msgid "No certificate is stored."
msgstr ""
#: includes/class-m365-login-admin.php:297
msgid "You are not allowed to access this page."
msgstr ""
#: includes/class-m365-login-admin.php:316
msgid "Let existing users sign in with their Microsoft 365 / Entra ID account."
msgstr ""
#: includes/class-m365-login-admin.php:321
msgid "Connected"
msgstr ""
#: includes/class-m365-login-admin.php:321
msgid "Setup incomplete"
msgstr ""
#: includes/class-m365-login-admin.php:329
msgid "Connection"
msgstr ""
#: includes/class-m365-login-admin.php:330
msgid "Button"
msgstr ""
#: includes/class-m365-login-admin.php:331
msgid "Security"
msgstr ""
#: includes/class-m365-login-admin.php:340
msgid "Microsoft Entra ID app registration"
msgstr ""
#: includes/class-m365-login-admin.php:341
msgid "Enter the values from your app registration in the Microsoft Entra admin center."
msgstr ""
#: includes/class-m365-login-admin.php:344
msgid "Directory (tenant) ID"
msgstr ""
#: includes/class-m365-login-admin.php:347
msgid "Test tenant"
msgstr ""
#: includes/class-m365-login-admin.php:349
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:351
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:357
msgid "Application (client) ID"
msgstr ""
#: includes/class-m365-login-admin.php:362
msgid "How should WordPress authenticate to Microsoft?"
msgstr ""
#: includes/class-m365-login-admin.php:367 includes/class-m365-login-admin.php:384
msgid "Client secret"
msgstr ""
#: includes/class-m365-login-admin.php:368
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:374
msgid "Certificate"
msgstr ""
#: includes/class-m365-login-admin.php:374
msgid "Recommended"
msgstr ""
#: includes/class-m365-login-admin.php:375
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:386
msgid "•••••••••••• (stored, leave empty to keep)"
msgstr ""
#: includes/class-m365-login-admin.php:386
msgid "Paste the secret value"
msgstr ""
#: includes/class-m365-login-admin.php:387
msgid "Show secret"
msgstr ""
#: includes/class-m365-login-admin.php:392
msgid "Remove the stored secret"
msgstr ""
#: includes/class-m365-login-admin.php:395
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:399
msgid "Step-by-step: create a client secret in Entra ID"
msgstr ""
#: includes/class-m365-login-admin.php:402
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:403
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:404
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:405
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:406
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:407
msgid "Paste the value into the Client secret field above and save this page."
msgstr ""
#: includes/class-m365-login-admin.php:409
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:422
msgid "Expired"
msgstr ""
#. translators: %d: number of days
#: includes/class-m365-login-admin.php:426
msgid "Expires in %d days"
msgstr ""
#. translators: %d: number of days
#: includes/class-m365-login-admin.php:429
msgid "Valid"
msgstr ""
#: includes/class-m365-login-admin.php:434
msgid "Thumbprint (SHA-1)"
msgstr ""
#: includes/class-m365-login-admin.php:436
msgid "Subject"
msgstr ""
#: includes/class-m365-login-admin.php:438
msgid "Key size"
msgstr ""
#: includes/class-m365-login-admin.php:440
msgid "Valid until"
msgstr ""
#: includes/class-m365-login-admin.php:444
msgid "Download certificate (.cer)"
msgstr ""
#: includes/class-m365-login-admin.php:445
msgid "Generate new certificate"
msgstr ""
#: includes/class-m365-login-admin.php:448
msgid "Remove certificate when saving"
msgstr ""
#: includes/class-m365-login-admin.php:452
msgid "No certificate stored yet."
msgstr ""
#: includes/class-m365-login-admin.php:454
msgid "Generate certificate"
msgstr ""
#: includes/class-m365-login-admin.php:455
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:459
msgid "Use your own certificate instead (paste PEM)"
msgstr ""
#: includes/class-m365-login-admin.php:462
msgid "Private key (PEM, unencrypted)"
msgstr ""
#: includes/class-m365-login-admin.php:466
msgid "Certificate (PEM)"
msgstr ""
#: includes/class-m365-login-admin.php:468
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:474
msgid "Step-by-step: register the certificate in Entra ID"
msgstr ""
#: includes/class-m365-login-admin.php:477
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:478
msgid "Open entra.microsoft.com → Identity → Applications → App registrations and open your app."
msgstr ""
#: includes/class-m365-login-admin.php:479
msgid "Choose Certificates & secrets in the left menu, then the tab Certificates, and click Upload certificate."
msgstr ""
#: includes/class-m365-login-admin.php:480
msgid "Select the downloaded .cer file, add a description such as \"WordPress login\" and click Add."
msgstr ""
#: includes/class-m365-login-admin.php:481
msgid "Compare the thumbprint Entra ID shows with the thumbprint above they must match exactly."
msgstr ""
#: includes/class-m365-login-admin.php:482
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:484
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:485
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:491
msgid "Account prompt"
msgstr ""
#: includes/class-m365-login-admin.php:493
msgid "Always let the user pick an account (recommended)"
msgstr ""
#: includes/class-m365-login-admin.php:494
msgid "Use the current Microsoft session if available"
msgstr ""
#: includes/class-m365-login-admin.php:495
msgid "Always require re-entering credentials"
msgstr ""
#: includes/class-m365-login-admin.php:504
msgid "Appearance"
msgstr ""
#: includes/class-m365-login-admin.php:507
msgid "Live preview"
msgstr ""
#: includes/class-m365-login-admin.php:521
msgid "Button text"
msgstr ""
#: includes/class-m365-login-admin.php:525
msgid "Divider text"
msgstr ""
#: includes/class-m365-login-admin.php:527
msgid "Leave empty to hide the divider line."
msgstr ""
#: includes/class-m365-login-admin.php:532
msgid "Icon"
msgstr ""
#: includes/class-m365-login-admin.php:535
msgid "Show an icon on the button"
msgstr ""
#: includes/class-m365-login-admin.php:546
msgid "Default: Microsoft logo"
msgstr ""
#: includes/class-m365-login-admin.php:548
msgid "Choose from media library"
msgstr ""
#: includes/class-m365-login-admin.php:549
msgid "Use Microsoft logo"
msgstr ""
#: includes/class-m365-login-admin.php:551
msgid "PNG, SVG, JPG or WebP. Square images (e.g. 64×64 px) work best."
msgstr ""
#: includes/class-m365-login-admin.php:559
msgid "Background"
msgstr ""
#: includes/class-m365-login-admin.php:560
msgid "Background (hover)"
msgstr ""
#: includes/class-m365-login-admin.php:561
msgid "Text colour"
msgstr ""
#: includes/class-m365-login-admin.php:562
msgid "Border"
msgstr ""
#: includes/class-m365-login-admin.php:575
msgid "Corner radius"
msgstr ""
#: includes/class-m365-login-admin.php:579
msgid "Position on the login page"
msgstr ""
#: includes/class-m365-login-admin.php:581
msgid "Below the login form"
msgstr ""
#: includes/class-m365-login-admin.php:582
msgid "Above the login form"
msgstr ""
#: includes/class-m365-login-admin.php:588
msgid "Quick presets"
msgstr ""
#: includes/class-m365-login-admin.php:589
msgid "Microsoft dark"
msgstr ""
#: includes/class-m365-login-admin.php:590
msgid "Microsoft light"
msgstr ""
#: includes/class-m365-login-admin.php:591
msgid "Azure blue"
msgstr ""
#: includes/class-m365-login-admin.php:592
msgid "WordPress blue"
msgstr ""
#: includes/class-m365-login-admin.php:596
msgid "Custom login page"
msgstr ""
#: includes/class-m365-login-admin.php:597
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:600
msgid "URL of your login page"
msgstr ""
#: includes/class-m365-login-admin.php:602
msgid "Must be on this site. Leave empty to use wp-login.php."
msgstr ""
#: includes/class-m365-login-admin.php:608
msgid "Add the button to every wp_login_form() form automatically"
msgstr ""
#: includes/class-m365-login-admin.php:609
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:614
msgid "Manual placement"
msgstr ""
#: includes/class-m365-login-admin.php:615
msgid "Shortcode (block editor, page builders):"
msgstr ""
#: includes/class-m365-login-admin.php:617
msgid "Template function (theme files):"
msgstr ""
#: includes/class-m365-login-admin.php:619
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:627
msgid "User matching & hardening"
msgstr ""
#: includes/class-m365-login-admin.php:628
msgid "Users are never created automatically. A Microsoft sign-in only succeeds when a WordPress user with the same e-mail address already exists."
msgstr ""
#: includes/class-m365-login-admin.php:633
msgid "Bind WordPress accounts to the Microsoft object ID"
msgstr ""
#: includes/class-m365-login-admin.php:634
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:641
msgid "Fall back to the user principal name (UPN)"
msgstr ""
#: includes/class-m365-login-admin.php:642
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:649
msgid "Keep users signed in (\"Remember me\")"
msgstr ""
#: includes/class-m365-login-admin.php:650
msgid "Issues a 14-day WordPress session instead of a browser session."
msgstr ""
#: includes/class-m365-login-admin.php:655
msgid "Allowed e-mail domains (optional)"
msgstr ""
#: includes/class-m365-login-admin.php:657
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:662
msgid "Allowed Entra groups (optional)"
msgstr ""
#: includes/class-m365-login-admin.php:663
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:666
msgid "Search groups"
msgstr ""
#: includes/class-m365-login-admin.php:668
msgid "Type a group name or paste an object ID…"
msgstr ""
#: includes/class-m365-login-admin.php:669
msgid "Search"
msgstr ""
#: includes/class-m365-login-admin.php:674
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:680
msgid "Selected groups"
msgstr ""
#: includes/class-m365-login-admin.php:681
msgid "No groups selected every matched user may sign in."
msgstr ""
#: includes/class-m365-login-admin.php:691
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:696
msgid "Button-only mode"
msgstr ""
#: includes/class-m365-login-admin.php:697
msgid "Hides the username/password fields (on wp-login.php and in wp_login_form() forms) and refuses every interactive password sign-in on the site, including custom login forms. Application passwords, REST, XML-RPC and WP-CLI are not affected."
msgstr ""
#: includes/class-m365-login-admin.php:702
msgid "Show only the Microsoft button on the login page"
msgstr ""
#: includes/class-m365-login-admin.php:703
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:708
msgid "Fallback link (keep it secret)"
msgstr ""
#: includes/class-m365-login-admin.php:709
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:717
msgid "Generate a new key when saving"
msgstr ""
#: includes/class-m365-login-admin.php:720
msgid "A key is generated automatically the first time you save these settings."
msgstr ""
#. translators: %s: PHP constant
#: includes/class-m365-login-admin.php:726
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:735
msgid "What the plugin does to keep sign-ins safe"
msgstr ""
#: includes/class-m365-login-admin.php:737
msgid "OpenID Connect authorization code flow with PKCE (S256) no tokens ever pass through the browser."
msgstr ""
#: includes/class-m365-login-admin.php:738
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:739
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:740
msgid "Client secret encrypted at rest; no accounts are created, no passwords are changed."
msgstr ""
#: includes/class-m365-login-admin.php:746
msgid "Save changes"
msgstr ""
#: includes/class-m365-login-admin.php:752
msgid "Redirect URI"
msgstr ""
#: includes/class-m365-login-admin.php:753
msgid "Register this URI in your app registration under Authentication → Web → Redirect URIs:"
msgstr ""
#: includes/class-m365-login-admin.php:759
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:762
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:767
msgid "Setup guide: app registration"
msgstr ""
#: includes/class-m365-login-admin.php:769
msgid "Open entra.microsoft.com → Identity → Applications → App registrations → New registration."
msgstr ""
#: includes/class-m365-login-admin.php:770
msgid "Name: e.g. \"WordPress login\". Supported account types: \"Accounts in this organizational directory only\" (single tenant)."
msgstr ""
#: includes/class-m365-login-admin.php:771
msgid "Redirect URI: choose the platform Web and paste the URI shown above. Then click Register."
msgstr ""
#: includes/class-m365-login-admin.php:772
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:773
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:774
msgid "Token configuration → Add optional claim → ID → tick \"email\" → Add. Confirm the API permission prompt."
msgstr ""
#: includes/class-m365-login-admin.php:775
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:776
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:778
msgid "Required API permission: openid, profile, email (delegated) granted by default."
msgstr ""
#: includes/class-m365-login-admin.php:779
msgid "Optional, for group restrictions: application permissions GroupMember.Read.All and User.Read.All (Microsoft Graph) with admin consent."
msgstr ""
#: includes/class-m365-login-admin.php:783
msgid "Shortcode"
msgstr ""
#: includes/class-m365-login-admin.php:784
msgid "Place the button on a custom login page:"
msgstr ""
#: includes/class-m365-login-admin.php:786
msgid "More options on the Button tab under \"Custom login page\"."
msgstr ""
#: includes/class-m365-login-auth.php:173
msgid "Password sign-in is disabled on this site. Please use the Microsoft button."
msgstr ""
#: includes/class-m365-login-auth.php:823
msgid "Password sign-in is temporarily enabled for this browser (30 minutes)."
msgstr ""
#: includes/class-m365-login-auth.php:844 includes/class-m365-login-graph.php:63
msgid "Microsoft login is not configured yet."
msgstr ""
#: includes/class-m365-login-auth.php:845
msgid "The login request expired or was invalid. Please try again."
msgstr ""
#: includes/class-m365-login-auth.php:846
msgid "Microsoft sign-in was cancelled."
msgstr ""
#: includes/class-m365-login-auth.php:847
msgid "Microsoft returned an error. Please try again."
msgstr ""
#: includes/class-m365-login-auth.php:848
msgid "Could not complete the sign-in with Microsoft. Please try again or contact an administrator."
msgstr ""
#: includes/class-m365-login-auth.php:849
msgid "The Microsoft sign-in could not be verified."
msgstr ""
#: includes/class-m365-login-auth.php:850
msgid "Your Microsoft account did not provide an e-mail address."
msgstr ""
#: includes/class-m365-login-auth.php:851
msgid "Your e-mail domain is not allowed to sign in here."
msgstr ""
#: includes/class-m365-login-auth.php:852
msgid "No WordPress account exists for your Microsoft e-mail address."
msgstr ""
#: includes/class-m365-login-auth.php:853
msgid "This WordPress account is linked to a different Microsoft account. Please contact an administrator."
msgstr ""
#: includes/class-m365-login-auth.php:854
msgid "You are not allowed to sign in with this account."
msgstr ""
#: includes/class-m365-login-auth.php:855
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:856
msgid "Your group membership could not be verified. Please contact an administrator."
msgstr ""
#: includes/class-m365-login-auth.php:857
msgid "The fallback key is not valid."
msgstr ""
#: includes/class-m365-login-auth.php:858
msgid "Too many attempts. Please wait 15 minutes."
msgstr ""
#: includes/class-m365-login-auth.php:859
msgid "Too many sign-in attempts from your connection. Please wait a few minutes and try again."
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:102
msgid "The certificate could not be read. Paste it in PEM format (-----BEGIN CERTIFICATE-----)."
msgstr ""
#: includes/class-m365-login-certificate.php:105
msgid "The certificate does not belong to this private key."
msgstr ""
#: includes/class-m365-login-certificate.php:110
msgid "The certificate has already expired."
msgstr ""
#: includes/class-m365-login-graph.php:201
msgid "Group"
msgstr ""
#: includes/class-m365-login-graph.php:203
msgid "Security group"
msgstr ""
#: includes/class-m365-login-graph.php:205
msgid "Microsoft 365 group"
msgstr ""
#: includes/class-m365-login-settings.php:47
msgid "Sign in with Microsoft"
msgstr ""
#: includes/class-m365-login-settings.php:56
msgid "or"
msgstr ""
#: includes/class-m365-login-settings.php:197 includes/class-m365-login-settings.php:445
msgid "The private key could not be encrypted. Is the OpenSSL extension available?"
msgstr ""
#: includes/class-m365-login-settings.php:391
msgid "The tenant ID must be a GUID (e.g. 1a2b3c4d-…) or one of \"organizations\", \"common\", \"consumers\"."
msgstr ""
#: includes/class-m365-login-settings.php:399
msgid "The application (client) ID must be a GUID."
msgstr ""
#: includes/class-m365-login-settings.php:411
msgid "The client secret contains invalid characters."
msgstr ""
#: includes/class-m365-login-settings.php:415
msgid "The client secret could not be encrypted. Is the OpenSSL extension available?"
msgstr ""
#: includes/class-m365-login-settings.php:435
msgid "Please paste both the private key and the certificate."
msgstr ""
#: includes/class-m365-login-settings.php:437
msgid "The pasted key or certificate is too large."
msgstr ""
#: includes/class-m365-login-settings.php:454
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:500
msgid "The custom login page must be a URL on this site."
msgstr ""
#: includes/class-m365-login.php:102
msgid "Settings"
msgstr ""
#: includes/class-m365-login.php:113
msgid "M365 Login requires PHP 7.4 or newer."
msgstr ""
#: includes/class-m365-login.php:114 includes/class-m365-login.php:123
msgid "Plugin activation failed"
msgstr ""
#: includes/class-m365-login.php:122
msgid "M365 Login requires the PHP OpenSSL extension (needed to verify Microsoft token signatures and to encrypt the client secret)."
msgstr ""