[WordPress] 外掛分享: PerfLocale

首頁 › 外掛目錄 › PerfLocale
WordPress 外掛 PerfLocale 的封面圖片
全新外掛
安裝啟用
★★★★★
5/5 分(2 則評價)
剛更新
最後更新
100%
問題解決
WordPress 6.4+ PHP 8.1+ v1.0.7.2 上架:2026-08-30

內容簡介

PerfLocale 是一款以性能為優先的多語言 WordPress 外掛,提供高效的內容翻譯、URL 路由及 SEO 支援,讓網站能夠輕鬆管理多語言內容,並確保良好的使用者體驗。

【主要功能】
• 內容翻譯:支援文章、頁面及自訂文章類型翻譯
• URL 路由:多種路由模式選擇,包括子目錄和子網域
• 字串翻譯:支援多語言的 gettext 字串翻譯
• 語言切換器:多種顯示方式,具備無障礙設計
• SEO 整合:支援 hreflang 和 sitemap 替代方案
• 電子商務支援:WooCommerce 產品及訂單翻譯

外掛標籤

開發者團隊

⬇ 下載最新版 (v1.0.7.2) 或搜尋安裝

① 下載 ZIP → 後台「外掛 › 安裝外掛 › 上傳外掛」
② 後台搜尋「PerfLocale」→ 直接安裝(推薦)
📦 歷史版本下載

原文外掛簡介

PerfLocale is a performance-first multilingual plugin for WordPress. A 3-layer cache, batch-preloaded queries, and conditional hook registration keep its own work per page small.
What you get

Content translation – posts, pages, any custom post type, taxonomies, and URL slugs, with translation-status tracking. Synced patterns, block-theme navigation menus, and block-theme templates and template parts are translatable too (opt-in)
URL routing – subdirectory (/en/), subdomain (en.example.com), per-domain, or query-parameter (?lang=en) modes; auto-detect from URL, cookie, browser, or an edge/CDN hint
String translation – gettext strings from any plugin or theme, file-based (.l10n.php) or database-mode, with full CLDR plural rules (Arabic 6 forms, Russian 3) and context support. The site title and tagline appear there too
Language switcher – block, shortcode, widget, menu, admin-bar, and template tags with full ARIA listbox accessibility
SEO – hreflang (HTML + HTTP) and sitemap alternates; integrates with Yoast, Rank Math, AIOSEO, SEOPress, The SEO Framework, and Slim SEO
Machine translation – DeepL, Google, Microsoft, LibreTranslate, a custom agency endpoint, and the WordPress 7.0 AI Client, with monthly usage caps
Translator role – a role for translation staff: it can create and edit translations and use machine translation. Like WordPress’s editing roles, it can also edit any post or page and upload media, but it cannot publish, delete or change settings.
E-commerce – WooCommerce product/variation/attribute translation, multi-currency (rates supplied by your own provider hook), inventory sync, localized order emails
Reliability – circuit breakers around every external dependency, token-guarded atomic locks, self-healing background jobs, and Site Health diagnostics

Modern SEO & UX
Translation-aware features generic SEO plugins can’t provide: Content-Language HTTP header, data-nosnippet guard for fallback pages, and opt-in Speculation Rules prerender and View Transitions for switching between languages. Auto-detects and integrates with 20+ plugins and themes, including WooCommerce, Elementor, ACF, Meta Box, Pods, all major SEO plugins, Gravity Forms, and the Blocksy, Kadence, and Neve themes.
For developers
200+ action/filter hooks, a full REST API, WP-CLI commands, and a documented addon system. A PHP helper API lets you translate a string or render a block of markup in any language from your own code. Classes and methods marked @api are semver-stable across 1.x. Multisite-ready. Full docs at perflocale.com/docs.
Try it without installing anything. Open a throwaway WordPress site in your browser with PerfLocale already active: Open PerfLocale in WordPress Playground
Where to go next

Set-up guide – a fresh install to a translated post with a working switcher: perflocale.com/docs/getting-started
Switching from another plugin – importers for WPML, Polylang and TranslatePress: perflocale.com/docs/migration
How it compares – PerfLocale against WPML, Polylang and TranslatePress: perflocale.com/compare
WooCommerce – products, variations, currencies, stock and order emails: perflocale.com/docs/woocommerce
Multisite – activation, per-site languages and background jobs across a network: perflocale.com/docs/multisite
Something not working? – symptom-first troubleshooting: perflocale.com/docs/troubleshooting
Hooks reference – every action and filter: perflocale.com/docs/hooks
REST API and WP-CLI – perflocale.com/docs/rest-api and perflocale.com/docs/wp-cli
Source code – github.com/perflocale/perflocale

Privacy
PerfLocale is privacy-first by default. No tracking, no analytics, no visitor fingerprinting.

Cookie: one cookie, perflocale_lang, stores only the active language slug. HttpOnly, Secure on HTTPS, SameSite=Lax, 365-day default lifetime (filterable via perflocale/cookie_lifetime). It can be turned off (see “Cookieless mode” below) – language routing is URL-based and works without it.
Visitor IP: never logged or stored. The optional GeoIP-redirect feature (disabled by default) ships with no lookup provider and no endpoint, so out of the box it sends the IP nowhere. If you wire a source yourself through the perflocale/geo/lookup_country or perflocale/geo/providers filter, the IP is passed to that source once per first visit to resolve a country code; the country code is then cached server-side (24 hours by default) under a salted, non-reversible key – an HMAC-SHA256, keyed with the site’s auth salt, of the IP after wp_privacy_anonymize_ip() has zeroed the host bits – never the raw IP or any value reversible to it.
WordPress Privacy API integration: Tools → Export Personal Data and Tools → Erase Personal Data both work. The eraser zeroes created_by on the background jobs the data subject dispatched and deletes their per-user UI-state meta – returning items_removed/items_retained counts. The same flow runs on the admin delete_user path. Full detail in the docs.
Consent gating: the perflocale/privacy/consent_given filter lets any consent-management plugin (Cookiebot, Complianz, OneTrust, etc.) hold back PerfLocale until a visitor has consented. When the filter returns false, the perflocale_lang cookie is not set, and the GeoIP and browser-language redirects do not run (no outbound request is made).
Cookieless mode: PerfLocale → Settings → URL & Routing → “Language Cookie” turns the perflocale_lang cookie off – no consent-management plugin required. Code on your site can still decide per request through the perflocale/language_cookie/enabled filter. URL-based language routing keeps working; you lose “remember my language” on non-prefixed URLs. On a WooCommerce store you also lose the cart and checkout language: the block cart/checkout posts to the non-prefixed Store API URLs, and the language stamped on a new order is read from that same cookie, so both fall back to the site’s default language. The automatic first-visit redirects (browser language, GeoIP, edge hint) do not run in cookieless mode unless code hooks that filter: without the cookie they would redirect the same visitor again on every default-language page.
Suggested privacy-policy text: auto-registered via wp_add_privacy_policy_content(). The sections shown adapt to which features are enabled – GeoIP wording only appears if GeoIP is on, MT wording only appears if MT is on.

Full technical detail: perflocale.com/docs/privacy
External Services
PerfLocale can optionally connect to external services for machine translation. All external service calls are disabled by default and require explicit user configuration (entering an API key and enabling the feature in settings). No data is sent to any external service without your action. The hosted providers below are contacted over HTTPS; for self-hosted or user-configured endpoints (LibreTranslate, agency, webhooks) use an HTTPS URL.
The GeoIP-redirect and WooCommerce exchange-rate features ship with no provider and contact no service on their own: they call nothing unless you wire a source yourself through the perflocale/geo/lookup_country / perflocale/geo/providers and perflocale/woocommerce/exchange_rates_fetched / perflocale/woocommerce/exchange_rate_providers filters. If you connect one, disclosing that service is your responsibility as the site owner.
API keys for the providers below can be supplied via an environment variable, a wp-config.php constant, or the admin Settings field (see the “Can I keep API keys out of the database?” FAQ).
Machine Translation
When you enable machine translation and configure an API key in PerfLocale → Settings → Addons → Machine Translation, the plugin sends the text you ask it to translate to the selected provider, together with source/target language codes and your API key. That text is: post titles, content and excerpts; taxonomy term names and descriptions; interface strings listed on the Strings screen (which can include strings registered by other plugins and themes) when you use its machine-translation controls; and, when meta translation is enabled, registered meta values such as SEO titles and descriptions or custom text fields. It is sent when you click “Machine Translate” or use the block editor’s translate actions, run a bulk or site-wide translation, translate via WP-CLI or the REST API, or enable auto-translate on publish or on create. Each provider below receives exactly that data, and only for the actions just listed. The provider API additionally defines a connection-test call that sends your API key and, for some providers, a fixed test word – never your content – so an add-on can verify credentials; no screen, WP-CLI command or REST route in PerfLocale itself invokes it.

DeepL – api.deepl.com / api-free.deepl.com. Commercial neural-translation API (free and paid tiers). Receives the text, language codes and API key described above.
Terms of Service | Privacy Policy
Google Cloud Translation – translation.googleapis.com. Google’s paid cloud translation API. Receives the text, language codes and API key described above.
Terms of Service | Privacy Policy
Microsoft Azure Translator – api.cognitive.microsofttranslator.com. Microsoft’s paid cloud translation API. Receives the text, language codes and API key described above.
Terms of Service | Privacy Policy
LibreTranslate – self-hosted or user-configured URL. Open-source translation server you host yourself or point at an instance you trust; the plugin calls no hard-coded LibreTranslate endpoint. Receives the text and language codes described above at the URL you configure. Terms of service and privacy policy are governed by the LibreTranslate instance you configure; the AGPL-3.0 linked below is the governing license of the software itself.
Terms (AGPL-3.0 License) | Source Code
WordPress AI Client – no hard-coded endpoint; delegated to WordPress core. When you select the “WordPress AI Client” provider on WordPress 7.0+ (or a host that ships the AI Client feature plugin), PerfLocale builds a short translation prompt (the text described above plus source/target language codes) and hands it to WordPress core’s wp_ai_client_prompt() function. PerfLocale itself makes no outbound HTTP request for this provider: WordPress core (and whichever AI provider you connected under Settings → Connectors) performs the network call. The data sent, the destination, and the governing Terms of Service / Privacy Policy are therefore those of the AI provider you configured in WordPress core, only for the actions listed above.
WordPress AI Building Blocks

External Translation Agency
When you configure an external agency URL in PerfLocale → Settings → Addons → Machine Translation, the plugin sends post content to the configured endpoint for human or agency translation:

Custom Agency Endpoint – user-configured URL. A webhook endpoint you configure (use an HTTPS URL) to send post content to a human translator or translation agency for offline processing; the destination is entirely under your control and the plugin calls no hard-coded endpoint. The plugin sends post text, source/target language codes, and a unique request ID, only when you submit a translation request; the agency must return the translated text in the immediate response. Terms of service and privacy policy are governed by the agency whose endpoint you choose to configure; review their public policies before sending post content.

Webhooks
When you register webhooks via the PerfLocale REST API, the plugin sends event notifications to your configured webhook URLs when translations are created, updated, or content changes:
(loopback, private-network and credential-bearing destinations, and ports outside WordPress’s own allowlist of 80, 443 and 8080, are rejected at validation time, and the refusal names the rule that was broken; on multisite, registering one requires network-administrator permissions) Endpoints you register via the PerfLocale REST API to receive translation-lifecycle notifications (use HTTPS URLs); the destinations are entirely under your control and the plugin calls no hard-coded URL. The plugin POSTs the event type, translation data (post IDs, language codes, status), and a timestamp whenever a translation is created, updated, or otherwise changes, and signs each payload with HMAC-SHA256 when a shared secret is configured. Terms of service and privacy policy are governed by whatever destination you register; review the operator’s public policies before registering the URL.
PerfLocale can also publish a read-only public REST endpoint for edge runtimes (/wp-json/perflocale/v1/config). It is served by your own site, makes no outbound third-party request and sends no data anywhere – see the “Does PerfLocale expose anything to edge workers?” FAQ for the full description.

延伸相關外掛

文章
Filter
Mastodon