
內容簡介
WPMMCC ATS 是一款多語言內容翻譯管理器,專為 WordPress 設計。它能掃描已安裝的外掛,發現可翻譯的欄位,並在控制台提供手動翻譯編輯器,所有功能均免費且無需授權金鑰。
【主要功能】
• 自動欄位發現:掃描可翻譯內容,包括自訂欄位和第三方外掛資料
• 翻譯規則引擎:自動分類欄位為翻譯、同步、ID映射等類別
• 手動翻譯編輯器:雙面板編輯器,左側為原始內容,右側為翻譯輸入
• 網站關聯:連結源語言與目標語言,虛擬網站擁有自己的 URL 前綴
• 翻譯記憶:記錄先前翻譯,以建議重複內容的匹配
• Gettext/字串翻譯:透過 gettext 過濾器翻譯外掛和佈景主題的 UI 字串
外掛標籤
開發者團隊
原文外掛簡介
WPMMCC ATS is a multilingual content translation manager for WordPress. It scans your installed plugins to discover translatable fields, builds translation rules, and provides a manual translation editor in the WordPress admin.
All features are free and fully functional. No license key, trial period, or payment is required to use any feature of this plugin.
Project links
Website: https://www.wpmm.cc/
Documentation: https://www.wpmm.cc/docs/
Getting started: https://www.wpmm.cc/docs/getting-started.html
Manual translation: https://www.wpmm.cc/docs/manual-translation.html
Automatic translation: https://www.wpmm.cc/docs/automatic-translation.html
FAQ and privacy: https://www.wpmm.cc/docs/faq.html
This plugin on WordPress.org: https://wordpress.org/plugins/wpmmcc-ats/
Plugin source: https://github.com/wpmmcc/wpmmcc-ats
Optional WPTSALL Client source: https://github.com/wpmmcc/wptsall-client
Client releases: https://github.com/wpmmcc/wptsall-client/releases
Client guide: https://www.wpmm.cc/docs/client-guide.html
Key Features
Automatic Field Discovery — Scans WordPress post types, taxonomies, custom fields, and third-party plugin data (WooCommerce, Elementor, Yoast SEO, ACF, and more) to find all translatable content.
Translation Rule Engine — Classifies fields into translate, sync, ID-mapping, compute, and skip categories automatically.
Manual Translation Editor — Two-panel editor in wp-admin: source content on the left, translation input on the right.
Site relations — Link a source language to a target language. A virtual site gets its own URL prefix (for example /en_us/). A network subsite can be the target as well.
Translation Memory — Remembers previous translations to suggest matches for repeated content.
Gettext/String Translation — Translates plugin and theme UI strings via the gettext filter.
Client API — Optional. An administrator can let the separate WPTSALL Client call this site, collect source text, and write translations back. This plugin does not call a translation vendor.
Optional: Standalone Translation Client
This plugin can expose a REST API on your own WordPress site so an optional standalone translation client (a separate program you install) can pull work and push translations back. The plugin does not call www.wpmm.cc or any other remote host for this flow. Communication is only between the client and your site.
Client source: https://github.com/wpmmcc/wptsall-client
Client releases: https://github.com/wpmmcc/wptsall-client/releases
Client guide: https://www.wpmm.cc/docs/client-guide.html
The client’s local web UI listens on 127.0.0.1:8977 by default (loopback only, on the machine where you run the client). The Desktop app listens on 127.0.0.1:8978 and stays on this computer. Port 8977 is unregistered and uncommon, so conflicts are rare; if another program has taken it, the WPTSALL_WEB_UI_PORT environment variable selects a different port for the web UI. The same client can also pair with the separate WPMMCC sync plugin. A direct WPMMCC pairing only syncs. When the client pairs those sites, sync_and_translate translates the title, content, and excerpt on the client before the push. WPMMCC does not call the translation vendor.
The client is NOT required. All plugin features work for manual translation without it.
External services
This plugin does not contact www.wpmm.cc, wpmm.cc, or any other third-party remote server by itself. There is no hard-coded outbound HTTP request from the plugin to WPMMCC servers (language packs, license checks, telemetry, or similar).
The only optional network communication is between your WordPress site and an optional third-party program (the standalone translation client) that you install and run. In that case the client calls REST endpoints hosted on your site; the plugin only answers those requests. The plugin never initiates a connection to the client or to www.wpmm.cc.
Optional translation client (third-party program)
What it is and what it is used for:
An optional self-hosted client can automate translation. When you enable the Client API in plugin settings and configure the client with your site URL, route secret, and client token, the client uses WordPress REST API routes under:
/wp-json/wptsall/v2/{route_secret}/client/...
{route_secret} is a site-generated path segment that obscures the client routes. All client routes require the header `X-WPTSALL-Client-Token` (token generated in wp-admin). Optional headers used by some routes: `X-WPTSALL-Protocol-Version`, `X-Client-Version`, `Idempotency-Key`, and (media upload only) media metadata headers listed below.
Communication happens only when:
1. An administrator enables the Client API and has a client token, AND
2. The optional client is running and configured to call this WordPress site.
What is not done by this plugin:
* No requests to www.wpmm.cc / wpmm.cc.
* No download of language packs from any remote host.
* No transmission of site content to WPMMCC or any translation service.
* This plugin does not call Google, DeepL, OpenAI, or any other translation API. If you configure such a provider in the optional client, that program sends the claimed source text to the endpoint you chose, with the API key you stored in the client. The provider’s own terms of service and privacy policy apply to that request. This plugin does not store that API key.
Documentation for the optional client (not called by this plugin):
* Client guide: https://www.wpmm.cc/docs/client-guide.html
* FAQ and privacy: https://www.wpmm.cc/docs/faq.html
* Client source: https://github.com/wpmmcc/wptsall-client
Client REST API: data sent and received
Base path: /wp-json/wptsall/v2/{route_secret}/client
Auth on every route below (unless noted): request header X-WPTSALL-Client-Token (and standard WordPress REST request metadata such as User-Agent / Accept).
GET /ping
Client sends: auth header only.
Plugin responds: JSON { success, data: { plugin_version, encryption_supported, sync_execution_mode, local_executor_enabled } }.
GET /validate-token
Client sends: auth header only.
Plugin responds: JSON { success, data: { site_url, site_domain, plugin_version, site_status, max_relations, token_status, encryption_supported, active_relations_count, sync_execution_mode, wordpress_version } }.
GET /site-relations
Client sends: auth header only.
Plugin responds: JSON list of active site relations, including relation id, source/target site ids, source/target languages, status, linked models (model id, plugin slug/name, post types, taxonomies), and i18n-related relation config flags used for discovery.
GET /rules
Client sends: auth header; query args relation_id and/or model_id (at least one required); optional header X-Client-Version.
Plugin responds: JSON translation rules for the models (field keys, translate/map/skip capabilities, related taxonomies, content_format where applicable), or an error if the client version is unsupported / relation inactive.
GET /content
Client sends: auth header; query args relation_id (required), data_type (post|term|language_pack|option), subtype, include_resync, page, per_page, optional include_ids (comma-separated object ids).
Plugin responds: JSON page of items needing translation. Each item typically includes object type/id, subtype, and complete_data (source post/term field values, or language-pack entry fields such as msgid/msgctxt/reference/text_domain, depending on data_type), plus totals/pagination.
POST /content/claim
Client sends: auth header; JSON body { relation_id, data_type, items: [ { object_id, post_type|taxonomy|subtype, ... } ] } (for language packs, items identify entry ids).
Plugin responds: JSON { success, claimed_count, claimed_items } (or error). Marks items claimed so other workers avoid double work.
POST /translation-callback
Client sends: auth header; optional Idempotency-Key; JSON body including at least:
Common: client_task_id, relation_id, business_line (e.g. post_content, taxonomy_content, custom_model, theme_i18n, plugin_i18n).
Content lines: object_type, object_id, source_lang, target_lang, translated_fields, translated_meta, optional media_mappings.
i18n lines: entries array of { entry_id, msgstr } (and related entry fields as provided by the client).
Plugin responds: JSON success/error, including idempotent replay when the same client_task_id or Idempotency-Key was already processed; may include result id / counts. On success, translated values are stored in WordPress (posts/terms/meta/template entries) and sync write-back may run according to site settings.
POST /media-upload
Client sends: auth header; headers X-WPTSALL-Filename (required), optional X-WPTSALL-Task-ID, X-WPTSALL-Source-ID, X-WPTSALL-Relation-ID; raw binary body of the media file (allowed media MIME types only; executable/script types rejected).
Plugin responds: JSON success with new attachment id / mapping info, or an error. Creates a WordPress media attachment on this site and may record a media mapping for later URL rewrite.
GET /tasks
Client sends: auth header; query args status (pending|retry), limit.
Plugin responds: JSON list of claimable task records for the client worker (task id, type/business context, language pair, payload/meta needed to perform the task, lease/claim fields). Claiming updates task status on the site.
Summary of direction
Client → Plugin (this WordPress site): authentication token; discovery query parameters; claim bodies; translation results; media binaries.
Plugin → Client: only HTTP responses to those requests (site/relation metadata, rules, source content to translate, task queue data, success/error). The plugin does not push data to the client unsolicited and does not call www.wpmm.cc.
Privacy Policy
This plugin does not collect or store personal user data on external servers. All plugin data stays in your WordPress database on your hosting.
This plugin does not contact www.wpmm.cc. It does not download language packs from external servers.
If you use the optional translation client, that program talks only to your WordPress site via the Client API above. Any call from the client to a third-party translation provider is configured by you in the client, not by this plugin.
Optional product documentation (not called by this plugin):
* FAQ and privacy: https://www.wpmm.cc/docs/faq.html
* Client guide: https://www.wpmm.cc/docs/client-guide.html
* Client source: https://github.com/wpmmcc/wptsall-client
Credits
This plugin bundles no third-party libraries. It is plain PHP built on WordPress core APIs (REST, WPDB/dbDelta, cron, gettext), and its admin pages use vanilla JavaScript plus jQuery as shipped with WordPress core.
Interface translations use the WordPress.org translation system (translate.wordpress.org, GlotPress).
For field discovery the plugin reads data from third-party content plugins — WooCommerce, Elementor, ACF, Yoast SEO and more. Those projects are not bundled or modified. The plugin coexists with the multilingual plugins WPML and Polylang; no code from either project is used.
