# 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 \n" "Language-Team: LANGUAGE \n" "X-Generator: bin/make-pot.py\n" "X-Domain: m365-login\n" #: includes/class-m365-login-admin.php:92 includes/class-m365-login-admin.php:93 includes/class-m365-login-admin.php:104 includes/class-m365-login-admin.php:725 msgid "M365 Login" msgstr "" #: includes/class-m365-login-admin.php:119 msgid "Connection" msgstr "" #: includes/class-m365-login-admin.php:120 msgid "Button" msgstr "" #: includes/class-m365-login-admin.php:121 msgid "Security" msgstr "" #: includes/class-m365-login-admin.php:122 msgid "User sync" msgstr "" #: includes/class-m365-login-admin.php:197 msgid "M365 Login is active but not connected to Microsoft Entra ID yet." msgstr "" #: includes/class-m365-login-admin.php:199 msgid "Open the settings" msgstr "" #: includes/class-m365-login-admin.php:230 msgid "Choose button icon" msgstr "" #: includes/class-m365-login-admin.php:231 msgid "Use this icon" msgstr "" #: includes/class-m365-login-admin.php:232 msgid "Copied!" msgstr "" #: includes/class-m365-login-admin.php:233 includes/class-m365-login-admin.php:848 includes/class-m365-login-admin.php:1102 includes/class-m365-login-admin.php:1147 msgid "Copy" msgstr "" #: includes/class-m365-login-admin.php:234 msgid "Testing…" msgstr "" #: includes/class-m365-login-admin.php:235 msgid "The tenant could not be reached. Check the tenant ID and the server’s outgoing connections." msgstr "" #: includes/class-m365-login-admin.php:236 msgid "No groups found." msgstr "" #: includes/class-m365-login-admin.php:237 msgid "Searching…" msgstr "" #: includes/class-m365-login-admin.php:238 msgid "Add" msgstr "" #: includes/class-m365-login-admin.php:239 includes/class-m365-login-admin.php:495 msgid "Remove" msgstr "" #: includes/class-m365-login-admin.php:240 includes/class-m365-login-admin.php:303 includes/class-m365-login-admin.php:468 msgid "Save the connection settings first, then search for groups." msgstr "" #: includes/class-m365-login-admin.php:241 msgid "Generate a new fallback key on save? The old link stops working." msgstr "" #: includes/class-m365-login-admin.php:242 msgid "Generating a 3072-bit key pair, this takes a moment…" msgstr "" #: includes/class-m365-login-admin.php:243 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:244 msgid "Remove the stored certificate when saving? Sign-in with the certificate method stops working." msgstr "" #: includes/class-m365-login-admin.php:245 msgid "Sync is running, this can take a while for large directories…" msgstr "" #: includes/class-m365-login-admin.php:246 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:247 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:248 msgid "You have unsaved changes. The sync uses the saved settings – save first." msgstr "" #: includes/class-m365-login-admin.php:249 includes/class-m365-login-admin.php:482 msgid "Move up" msgstr "" #: includes/class-m365-login-admin.php:261 includes/class-m365-login-admin.php:300 includes/class-m365-login-admin.php:326 includes/class-m365-login-admin.php:359 includes/class-m365-login-admin.php:514 includes/class-m365-login-sync.php:1611 msgid "You are not allowed to do this." msgstr "" #: includes/class-m365-login-admin.php:266 msgid "Please enter a valid tenant ID first." msgstr "" #. translators: %d: HTTP status code #: includes/class-m365-login-admin.php:280 msgid "Microsoft answered with HTTP %d. Is the tenant ID correct?" msgstr "" #. translators: %d: HTTP status code #: includes/class-m365-login-admin.php:289 msgid "Tenant reachable. The OpenID configuration was loaded successfully." msgstr "" #: includes/class-m365-login-admin.php:312 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:330 msgid "Unknown operation." msgstr "" #: includes/class-m365-login-admin.php:347 msgid "Certificate generated and stored. Download the .cer file and upload it in Entra ID." msgstr "" #: includes/class-m365-login-admin.php:374 msgid "The sync has not run yet." msgstr "" #: includes/class-m365-login-admin.php:378 msgid "Finished" msgstr "" #: includes/class-m365-login-admin.php:379 msgid "Failed" msgstr "" #: includes/class-m365-login-admin.php:380 msgid "Stopped by the safety limit" msgstr "" #: includes/class-m365-login-admin.php:381 msgid "Not started" msgstr "" #: includes/class-m365-login-admin.php:384 msgid "started manually" msgstr "" #: includes/class-m365-login-admin.php:385 msgid "scheduled" msgstr "" #: includes/class-m365-login-admin.php:386 msgid "WP-CLI" msgstr "" #: includes/class-m365-login-admin.php:389 msgid "would be created" msgstr "" #: includes/class-m365-login-admin.php:389 msgid "created" msgstr "" #: includes/class-m365-login-admin.php:390 msgid "would be updated" msgstr "" #: includes/class-m365-login-admin.php:390 msgid "updated" msgstr "" #: includes/class-m365-login-admin.php:391 msgid "would be linked" msgstr "" #: includes/class-m365-login-admin.php:391 msgid "linked" msgstr "" #: includes/class-m365-login-admin.php:392 msgid "unchanged" msgstr "" #: includes/class-m365-login-admin.php:393 msgid "would be deactivated" msgstr "" #: includes/class-m365-login-admin.php:393 msgid "deactivated" msgstr "" #: includes/class-m365-login-admin.php:394 msgid "would be reactivated" msgstr "" #: includes/class-m365-login-admin.php:394 msgid "reactivated" msgstr "" #: includes/class-m365-login-admin.php:395 msgid "would be deleted" msgstr "" #: includes/class-m365-login-admin.php:395 msgid "deleted" msgstr "" #: includes/class-m365-login-admin.php:396 msgid "photos" msgstr "" #: includes/class-m365-login-admin.php:397 msgid "skipped" msgstr "" #: includes/class-m365-login-admin.php:398 msgid "errors" msgstr "" #: includes/class-m365-login-admin.php:411 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:416 msgid "%1$s, %2$s, %3$d s" msgstr "" #. translators: %d: number of log entries #: includes/class-m365-login-admin.php:434 msgid "Log (%d entry)" msgid_plural "Log (%d entries)" msgstr[0] "" msgstr[1] "" #: includes/class-m365-login-admin.php:462 msgid "Search groups" msgstr "" #: includes/class-m365-login-admin.php:464 msgid "Type a group name or paste an object ID…" msgstr "" #: includes/class-m365-login-admin.php:465 msgid "Search" msgstr "" #: includes/class-m365-login-admin.php:470 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:476 msgid "Selected groups" msgstr "" #: includes/class-m365-login-admin.php:488 msgid "WordPress role" msgstr "" #: includes/class-m365-login-admin.php:520 msgid "No certificate is stored." msgstr "" #: includes/class-m365-login-admin.php:545 msgid "Do nothing" msgstr "" #: includes/class-m365-login-admin.php:546 msgid "Deactivate the WordPress account" msgstr "" #: includes/class-m365-login-admin.php:547 msgid "Delete the WordPress account" msgstr "" #: includes/class-m365-login-admin.php:550 msgid "Account disabled in Microsoft 365 (sign-in blocked)" msgstr "" #: includes/class-m365-login-admin.php:551 msgid "Account deleted in Microsoft 365" msgstr "" #: includes/class-m365-login-admin.php:552 msgid "No longer a member of the sync groups" msgstr "" #: includes/class-m365-login-admin.php:557 msgid "Import users from Microsoft 365" msgstr "" #: includes/class-m365-login-admin.php:558 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:563 msgid "Run the sync automatically" msgstr "" #: includes/class-m365-login-admin.php:564 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:570 msgid "Interval" msgstr "" #: includes/class-m365-login-admin.php:572 msgid "Hourly" msgstr "" #: includes/class-m365-login-admin.php:573 msgid "Twice daily" msgstr "" #: includes/class-m365-login-admin.php:574 msgid "Daily" msgstr "" #. translators: %s: date and time #: includes/class-m365-login-admin.php:578 msgid "Next run: %s" msgstr "" #: includes/class-m365-login-admin.php:586 msgid "Also import guest users (B2B)" msgstr "" #: includes/class-m365-login-admin.php:587 msgid "Guests are external people invited into your tenant. Off by default." msgstr "" #: includes/class-m365-login-admin.php:591 msgid "Which users? (optional)" msgstr "" #: includes/class-m365-login-admin.php:592 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:593 msgid "No groups selected – all users of the tenant are imported." msgstr "" #: includes/class-m365-login-admin.php:597 msgid "Roles" msgstr "" #: includes/class-m365-login-admin.php:600 msgid "Default role" msgstr "" #: includes/class-m365-login-admin.php:604 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:607 msgid "Additional roles from Microsoft 365 groups" msgstr "" #: includes/class-m365-login-admin.php:608 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:609 msgid "No group mapping – everybody gets the default role." msgstr "" #: includes/class-m365-login-admin.php:612 msgid "How are mapped roles applied?" msgstr "" #: includes/class-m365-login-admin.php:615 msgid "In addition to the default role (a user can have several roles)" msgstr "" #: includes/class-m365-login-admin.php:619 msgid "Instead of the default role – the first matching group in the list wins (use ↑ to reorder)" msgstr "" #: includes/class-m365-login-admin.php:626 msgid "Also manage the roles of accounts that existed before the sync" msgstr "" #: includes/class-m365-login-admin.php:627 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:633 msgid "Profile fields" msgstr "" #: includes/class-m365-login-admin.php:634 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:643 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:647 msgid "Disabled and deleted Microsoft 365 accounts" msgstr "" #: includes/class-m365-login-admin.php:648 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:659 msgid "Only relevant when the import is limited to groups." msgstr "" #: includes/class-m365-login-admin.php:665 msgid "Posts of deleted accounts go to" msgstr "" #: includes/class-m365-login-admin.php:673 msgid "— Select a user —" msgstr "" #: includes/class-m365-login-admin.php:680 msgid "Required for \"Delete\". Without a user, accounts are deactivated instead, so no content is ever lost." msgstr "" #: includes/class-m365-login-admin.php:683 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:687 msgid "Run the sync" msgstr "" #: includes/class-m365-login-admin.php:688 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:690 msgid "Dry run" msgstr "" #: includes/class-m365-login-admin.php:691 msgid "Sync now" msgstr "" #: includes/class-m365-login-admin.php:693 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:707 msgid "You are not allowed to access this page." msgstr "" #: includes/class-m365-login-admin.php:726 msgid "Let existing users sign in with their Microsoft 365 / Entra ID account." msgstr "" #: includes/class-m365-login-admin.php:731 msgid "Connected" msgstr "" #: includes/class-m365-login-admin.php:731 msgid "Setup incomplete" msgstr "" #: includes/class-m365-login-admin.php:753 msgid "Microsoft Entra ID app registration" msgstr "" #: includes/class-m365-login-admin.php:754 msgid "Enter the values from your app registration in the Microsoft Entra admin center." msgstr "" #: includes/class-m365-login-admin.php:757 msgid "Directory (tenant) ID" msgstr "" #: includes/class-m365-login-admin.php:760 msgid "Test tenant" msgstr "" #: includes/class-m365-login-admin.php:762 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:764 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:770 msgid "Application (client) ID" msgstr "" #: includes/class-m365-login-admin.php:775 msgid "How should WordPress authenticate to Microsoft?" msgstr "" #: includes/class-m365-login-admin.php:780 includes/class-m365-login-admin.php:797 msgid "Client secret" msgstr "" #: includes/class-m365-login-admin.php:781 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:787 msgid "Certificate" msgstr "" #: includes/class-m365-login-admin.php:787 msgid "Recommended" msgstr "" #: includes/class-m365-login-admin.php:788 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:799 msgid "•••••••••••• (stored, leave empty to keep)" msgstr "" #: includes/class-m365-login-admin.php:799 msgid "Paste the secret value" msgstr "" #: includes/class-m365-login-admin.php:800 msgid "Show secret" msgstr "" #: includes/class-m365-login-admin.php:805 msgid "Remove the stored secret" msgstr "" #: includes/class-m365-login-admin.php:808 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:812 msgid "Step-by-step: create a client secret in Entra ID" msgstr "" #: includes/class-m365-login-admin.php:815 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:816 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:817 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:818 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:819 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:820 msgid "Paste the value into the Client secret field above and save this page." msgstr "" #: includes/class-m365-login-admin.php:822 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:835 msgid "Expired" msgstr "" #. translators: %d: number of days #: includes/class-m365-login-admin.php:839 msgid "Expires in %d days" msgstr "" #. translators: %d: number of days #: includes/class-m365-login-admin.php:842 msgid "Valid" msgstr "" #: includes/class-m365-login-admin.php:847 msgid "Thumbprint (SHA-1)" msgstr "" #: includes/class-m365-login-admin.php:849 msgid "Subject" msgstr "" #: includes/class-m365-login-admin.php:851 msgid "Key size" msgstr "" #: includes/class-m365-login-admin.php:853 msgid "Valid until" msgstr "" #: includes/class-m365-login-admin.php:857 msgid "Download certificate (.cer)" msgstr "" #: includes/class-m365-login-admin.php:858 msgid "Generate new certificate" msgstr "" #: includes/class-m365-login-admin.php:861 msgid "Remove certificate when saving" msgstr "" #: includes/class-m365-login-admin.php:865 msgid "No certificate stored yet." msgstr "" #: includes/class-m365-login-admin.php:867 msgid "Generate certificate" msgstr "" #: includes/class-m365-login-admin.php:868 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:872 msgid "Use your own certificate instead (paste PEM)" msgstr "" #: includes/class-m365-login-admin.php:875 msgid "Private key (PEM, unencrypted)" msgstr "" #: includes/class-m365-login-admin.php:879 msgid "Certificate (PEM)" msgstr "" #: includes/class-m365-login-admin.php:881 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:887 msgid "Step-by-step: register the certificate in Entra ID" msgstr "" #: includes/class-m365-login-admin.php:890 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:891 msgid "Open entra.microsoft.com → Identity → Applications → App registrations and open your app." msgstr "" #: includes/class-m365-login-admin.php:892 msgid "Choose Certificates & secrets in the left menu, then the tab Certificates, and click Upload certificate." msgstr "" #: includes/class-m365-login-admin.php:893 msgid "Select the downloaded .cer file, add a description such as \"WordPress login\" and click Add." msgstr "" #: includes/class-m365-login-admin.php:894 msgid "Compare the thumbprint Entra ID shows with the thumbprint above – they must match exactly." msgstr "" #: includes/class-m365-login-admin.php:895 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:897 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:898 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:904 msgid "Account prompt" msgstr "" #: includes/class-m365-login-admin.php:906 msgid "Always let the user pick an account (recommended)" msgstr "" #: includes/class-m365-login-admin.php:907 msgid "Use the current Microsoft session if available" msgstr "" #: includes/class-m365-login-admin.php:908 msgid "Always require re-entering credentials" msgstr "" #: includes/class-m365-login-admin.php:917 msgid "Appearance" msgstr "" #: includes/class-m365-login-admin.php:920 msgid "Live preview" msgstr "" #: includes/class-m365-login-admin.php:934 msgid "Button text" msgstr "" #: includes/class-m365-login-admin.php:938 msgid "Divider text" msgstr "" #: includes/class-m365-login-admin.php:940 msgid "Leave empty to hide the divider line." msgstr "" #: includes/class-m365-login-admin.php:945 msgid "Icon" msgstr "" #: includes/class-m365-login-admin.php:948 msgid "Show an icon on the button" msgstr "" #: includes/class-m365-login-admin.php:959 msgid "Default: Microsoft logo" msgstr "" #: includes/class-m365-login-admin.php:961 msgid "Choose from media library" msgstr "" #: includes/class-m365-login-admin.php:962 msgid "Use Microsoft logo" msgstr "" #: includes/class-m365-login-admin.php:964 msgid "PNG, SVG, JPG or WebP. Square images (e.g. 64×64 px) work best." msgstr "" #: includes/class-m365-login-admin.php:972 msgid "Background" msgstr "" #: includes/class-m365-login-admin.php:973 msgid "Background (hover)" msgstr "" #: includes/class-m365-login-admin.php:974 msgid "Text colour" msgstr "" #: includes/class-m365-login-admin.php:975 msgid "Border" msgstr "" #: includes/class-m365-login-admin.php:988 msgid "Corner radius" msgstr "" #: includes/class-m365-login-admin.php:992 msgid "Position on the login page" msgstr "" #: includes/class-m365-login-admin.php:994 msgid "Below the login form" msgstr "" #: includes/class-m365-login-admin.php:995 msgid "Above the login form" msgstr "" #: includes/class-m365-login-admin.php:1001 msgid "Quick presets" msgstr "" #: includes/class-m365-login-admin.php:1002 msgid "Microsoft dark" msgstr "" #: includes/class-m365-login-admin.php:1003 msgid "Microsoft light" msgstr "" #: includes/class-m365-login-admin.php:1004 msgid "Azure blue" msgstr "" #: includes/class-m365-login-admin.php:1005 msgid "WordPress blue" msgstr "" #: includes/class-m365-login-admin.php:1009 msgid "Custom login page" msgstr "" #: includes/class-m365-login-admin.php:1010 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:1013 msgid "URL of your login page" msgstr "" #: includes/class-m365-login-admin.php:1015 msgid "Must be on this site. Leave empty to use wp-login.php." msgstr "" #: includes/class-m365-login-admin.php:1021 msgid "Add the button to every wp_login_form() form automatically" msgstr "" #: includes/class-m365-login-admin.php:1022 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:1027 msgid "Manual placement" msgstr "" #: includes/class-m365-login-admin.php:1028 msgid "Shortcode (block editor, page builders):" msgstr "" #: includes/class-m365-login-admin.php:1030 msgid "Template function (theme files):" msgstr "" #: includes/class-m365-login-admin.php:1032 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:1040 msgid "User matching & hardening" msgstr "" #: includes/class-m365-login-admin.php:1041 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:1046 msgid "Bind WordPress accounts to the Microsoft object ID" msgstr "" #: includes/class-m365-login-admin.php:1047 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:1054 msgid "Fall back to the user principal name (UPN)" msgstr "" #: includes/class-m365-login-admin.php:1055 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:1062 msgid "Keep users signed in (\"Remember me\")" msgstr "" #: includes/class-m365-login-admin.php:1063 msgid "Issues a 14-day WordPress session instead of a browser session." msgstr "" #: includes/class-m365-login-admin.php:1068 msgid "Allowed e-mail domains (optional)" msgstr "" #: includes/class-m365-login-admin.php:1070 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:1075 msgid "Allowed Entra groups (optional)" msgstr "" #: includes/class-m365-login-admin.php:1076 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:1078 msgid "No groups selected – every matched user may sign in." msgstr "" #: includes/class-m365-login-admin.php:1080 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:1085 msgid "Button-only mode" msgstr "" #: includes/class-m365-login-admin.php:1086 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:1091 msgid "Show only the Microsoft button on the login page" msgstr "" #: includes/class-m365-login-admin.php:1092 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:1097 msgid "Fallback link (keep it secret)" msgstr "" #: includes/class-m365-login-admin.php:1098 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:1106 msgid "Generate a new key when saving" msgstr "" #: includes/class-m365-login-admin.php:1109 msgid "A key is generated automatically the first time you save these settings." msgstr "" #. translators: %s: PHP constant #: includes/class-m365-login-admin.php:1115 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:1124 msgid "What the plugin does to keep sign-ins safe" msgstr "" #: includes/class-m365-login-admin.php:1126 msgid "OpenID Connect authorization code flow with PKCE (S256) – no tokens ever pass through the browser." msgstr "" #: includes/class-m365-login-admin.php:1127 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:1128 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:1129 msgid "Client secret encrypted at rest; sign-in never creates accounts or changes passwords." msgstr "" #: includes/class-m365-login-admin.php:1137 msgid "Save changes" msgstr "" #: includes/class-m365-login-admin.php:1143 msgid "Redirect URI" msgstr "" #: includes/class-m365-login-admin.php:1144 msgid "Register this URI in your app registration under Authentication → Web → Redirect URIs:" msgstr "" #: includes/class-m365-login-admin.php:1150 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:1153 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:1158 msgid "Setup guide: app registration" msgstr "" #: includes/class-m365-login-admin.php:1160 msgid "Open entra.microsoft.com → Identity → Applications → App registrations → New registration." msgstr "" #: includes/class-m365-login-admin.php:1161 msgid "Name: e.g. \"WordPress login\". Supported account types: \"Accounts in this organizational directory only\" (single tenant)." msgstr "" #: includes/class-m365-login-admin.php:1162 msgid "Redirect URI: choose the platform Web and paste the URI shown above. Then click Register." msgstr "" #: includes/class-m365-login-admin.php:1163 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:1164 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:1165 msgid "Token configuration → Add optional claim → ID → tick \"email\" → Add. Confirm the API permission prompt." msgstr "" #: includes/class-m365-login-admin.php:1166 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:1167 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:1169 msgid "Required API permission: openid, profile, email (delegated) – granted by default." msgstr "" #: includes/class-m365-login-admin.php:1170 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:1174 msgid "Shortcode" msgstr "" #: includes/class-m365-login-admin.php:1175 msgid "Place the button on a custom login page:" msgstr "" #: includes/class-m365-login-admin.php:1177 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:827 msgid "Password sign-in is temporarily enabled for this browser (30 minutes)." msgstr "" #: includes/class-m365-login-auth.php:848 includes/class-m365-login-graph.php:63 msgid "Microsoft login is not configured yet." msgstr "" #: includes/class-m365-login-auth.php:849 msgid "The login request expired or was invalid. Please try again." msgstr "" #: includes/class-m365-login-auth.php:850 msgid "Microsoft sign-in was cancelled." msgstr "" #: includes/class-m365-login-auth.php:851 msgid "Microsoft returned an error. Please try again." msgstr "" #: includes/class-m365-login-auth.php:852 msgid "Could not complete the sign-in with Microsoft. Please try again or contact an administrator." msgstr "" #: includes/class-m365-login-auth.php:853 msgid "The Microsoft sign-in could not be verified." msgstr "" #: includes/class-m365-login-auth.php:854 msgid "Your Microsoft account did not provide an e-mail address." msgstr "" #: includes/class-m365-login-auth.php:855 msgid "Your e-mail domain is not allowed to sign in here." msgstr "" #: includes/class-m365-login-auth.php:856 msgid "No WordPress account exists for your Microsoft e-mail address." msgstr "" #: includes/class-m365-login-auth.php:857 msgid "This WordPress account is linked to a different Microsoft account. Please contact an administrator." msgstr "" #: includes/class-m365-login-auth.php:858 msgid "You are not allowed to sign in with this account." msgstr "" #: includes/class-m365-login-auth.php:859 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:860 msgid "Your group membership could not be verified. Please contact an administrator." msgstr "" #: includes/class-m365-login-auth.php:861 msgid "The fallback key is not valid." msgstr "" #: includes/class-m365-login-auth.php:862 msgid "Too many attempts. Please wait 15 minutes." msgstr "" #: includes/class-m365-login-auth.php:863 msgid "Too many sign-in attempts from your connection. Please wait a few minutes and try again." msgstr "" #: includes/class-m365-login-auth.php:864 includes/class-m365-login-sync.php:1520 msgid "This account has been deactivated." 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:434 msgid "Group" msgstr "" #: includes/class-m365-login-graph.php:436 msgid "Security group" msgstr "" #: includes/class-m365-login-graph.php:438 msgid "Microsoft 365 group" msgstr "" #: includes/class-m365-login-settings.php:54 msgid "Sign in with Microsoft" msgstr "" #: includes/class-m365-login-settings.php:63 msgid "or" msgstr "" #: includes/class-m365-login-settings.php:225 includes/class-m365-login-settings.php:530 msgid "The private key could not be encrypted. Is the OpenSSL extension available?" msgstr "" #: includes/class-m365-login-settings.php:476 msgid "The tenant ID must be a GUID (e.g. 1a2b3c4d-…) or one of \"organizations\", \"common\", \"consumers\"." msgstr "" #: includes/class-m365-login-settings.php:484 msgid "The application (client) ID must be a GUID." msgstr "" #: includes/class-m365-login-settings.php:496 msgid "The client secret contains invalid characters." msgstr "" #: includes/class-m365-login-settings.php:500 msgid "The client secret could not be encrypted. Is the OpenSSL extension available?" msgstr "" #: includes/class-m365-login-settings.php:520 msgid "Please paste both the private key and the certificate." msgstr "" #: includes/class-m365-login-settings.php:522 msgid "The pasted key or certificate is too large." msgstr "" #: includes/class-m365-login-settings.php:539 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:571 msgid "The custom login page must be a URL on this site." msgstr "" #: includes/class-m365-login-settings.php:678 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:110 msgid "Display name" msgstr "" #: includes/class-m365-login-sync.php:114 msgid "First name" msgstr "" #: includes/class-m365-login-sync.php:118 msgid "Last name" msgstr "" #: includes/class-m365-login-sync.php:122 msgid "Profile photo (used as avatar)" msgstr "" #: includes/class-m365-login-sync.php:126 msgid "Job title" msgstr "" #: includes/class-m365-login-sync.php:130 msgid "Department" msgstr "" #: includes/class-m365-login-sync.php:134 msgid "Company" msgstr "" #: includes/class-m365-login-sync.php:138 msgid "Office" msgstr "" #: includes/class-m365-login-sync.php:142 msgid "Employee ID" msgstr "" #: includes/class-m365-login-sync.php:146 msgid "Business phone" msgstr "" #: includes/class-m365-login-sync.php:150 msgid "Mobile phone" msgstr "" #: includes/class-m365-login-sync.php:154 msgid "Street address" msgstr "" #: includes/class-m365-login-sync.php:158 msgid "Postal code" msgstr "" #: includes/class-m365-login-sync.php:162 msgid "City" msgstr "" #: includes/class-m365-login-sync.php:166 msgid "State / province" msgstr "" #: includes/class-m365-login-sync.php:170 msgid "Country" msgstr "" #: includes/class-m365-login-sync.php:174 msgid "Language (sets the admin language if installed)" msgstr "" #: includes/class-m365-login-sync.php:309 msgid "Another sync is still running. Please try again in a few minutes." msgstr "" #: includes/class-m365-login-sync.php:366 msgid "The connection to Microsoft Entra ID is not configured yet." msgstr "" #: includes/class-m365-login-sync.php:370 msgid "The user sync needs a pinned tenant ID (GUID) on the Connection tab." msgstr "" #: includes/class-m365-login-sync.php:374 msgid "The default role does not exist. Please check the sync settings." msgstr "" #. translators: %d: number of users #: includes/class-m365-login-sync.php:386 msgid "%d user read from Microsoft 365." msgid_plural "%d users read from Microsoft 365." msgstr[0] "" msgstr[1] "" #. translators: 1: number of accounts, 2: limit #: includes/class-m365-login-sync.php:443 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 "" #. translators: %s: user principal name #: includes/class-m365-login-sync.php:567 msgid "%s: no usable e-mail address, skipped." msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:574 msgid "%s: e-mail domain is not on the allow-list, skipped." msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:586 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:590 msgid "%s: existing account linked." msgstr "" #: includes/class-m365-login-sync.php:604 includes/class-m365-login-sync.php:955 includes/class-m365-login-sync.php:1652 msgid "disabled in Microsoft 365" msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:615 msgid "%s: added to this site." msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:624 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:635 msgid "%1$s: updated (%2$s)." msgstr "" #. translators: 1: e-mail address, 2: role names #: includes/class-m365-login-sync.php:661 msgid "%1$s: account created (%2$s)." msgstr "" #. translators: 1: e-mail address, 2: error message #: includes/class-m365-login-sync.php:688 msgid "%1$s: account could not be created: %2$s" msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:746 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:749 msgid "e-mail" msgstr "" #. translators: %s: profile field #: includes/class-m365-login-sync.php:799 msgid "%s removed" msgstr "" #. translators: 1: e-mail address, 2: error message #: includes/class-m365-login-sync.php:809 msgid "%1$s: profile could not be updated: %2$s" msgstr "" #. translators: %s: role names #: includes/class-m365-login-sync.php:915 msgid "roles: %s" msgstr "" #: includes/class-m365-login-sync.php:950 includes/class-m365-login-sync.php:1653 msgid "deleted in Microsoft 365" msgstr "" #: includes/class-m365-login-sync.php:958 includes/class-m365-login-sync.php:1654 msgid "no longer a member of the sync groups" msgstr "" #. translators: 1: e-mail address, 2: reason #: includes/class-m365-login-sync.php:978 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:1011 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:1020 msgid "%1$s: account deleted (%2$s)." msgstr "" #. translators: 1: e-mail address, 2: reason #: includes/class-m365-login-sync.php:1029 msgid "%1$s: account deactivated (%2$s)." msgstr "" #: includes/class-m365-login-sync.php:1108 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:1111 msgid "Microsoft Graph error: %s" msgstr "" #: includes/class-m365-login-sync.php:1129 msgid "Log truncated." msgstr "" #. translators: 1: e-mail address, 2: error message #: includes/class-m365-login-sync.php:1205 msgid "%1$s: profile photo could not be read: %2$s" msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:1229 includes/class-m365-login-sync.php:1272 msgid "%s: profile photo updated." msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:1248 msgid "%s: profile photo could not be downloaded." msgstr "" #. translators: %s: e-mail address #: includes/class-m365-login-sync.php:1255 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:1278 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:1293 msgid "%s: profile photo removed." msgstr "" #. translators: %d: number of photos #: includes/class-m365-login-sync.php:1321 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:1549 includes/class-m365-login-sync.php:1682 msgid "Microsoft 365" msgstr "" #: includes/class-m365-login-sync.php:1567 msgid "Deactivated" msgstr "" #: includes/class-m365-login-sync.php:1570 msgid "Imported" msgstr "" #: includes/class-m365-login-sync.php:1572 msgid "Linked" msgstr "" #: includes/class-m365-login-sync.php:1600 msgid "Reactivate" msgstr "" #: includes/class-m365-login-sync.php:1600 msgid "Deactivate" msgstr "" #: includes/class-m365-login-sync.php:1633 msgid "The account has been deactivated and signed out everywhere." msgstr "" #: includes/class-m365-login-sync.php:1634 msgid "The account has been reactivated." msgstr "" #. translators: 1: date, 2: reason #: includes/class-m365-login-sync.php:1658 msgid "Deactivated since %1$s (%2$s)" msgstr "" #. translators: 1: date, 2: reason #: includes/class-m365-login-sync.php:1660 msgid "manually" msgstr "" #. translators: 1: date, 2: reason #: includes/class-m365-login-sync.php:1662 msgid "Status" msgstr "" #: includes/class-m365-login-sync.php:1665 msgid "Object ID" msgstr "" #: includes/class-m365-login-sync.php:1669 msgid "Last sync" msgstr "" #: includes/class-m365-login-sync.php:1691 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 ""