| 开发者 |
transleti
grupobouso |
|---|---|
| 更新时间 | 2026年7月20日 08:40 |
| PHP版本: | 8.0 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
<url> entries per language (the format Google explicitly documents) with self-referential hreflang and x-default. Compatible with Yoast SEO, RankMath, SEOPress, AIOSEO and the WordPress core sitemap./es/contacto/) for clean per-language SEO.©, [shortcode], and similar in translated output.transleti-translator folder to /wp-content/plugins/, or install through the WordPress plugin installer.No. The plugin is free GPL software and works fully in manual mode without any external connection or paid subscription. Automatic translation is an optional add-on that uses the Transleti API.
Yes. Without an API key the plugin runs in manual mode: language switcher, per-language slugs, hreflang sitemap and the manual / visual translation editors all work normally. You simply type translations by hand instead of having the plugin generate them.
The automatic translation API is a flat-rate subscription (unlimited words and languages) that you can start at https://transleti.com. It comes with a 14-day money-back guarantee: if it isn't for you, ask for a refund within 14 days. The manual workflow always keeps working for free, whether or not you subscribe.
Your translations are always yours. Your translated content is stored in your own site's database and keeps working in manual mode for free even if you later cancel your subscription — you never lose it. Your original content (your posts and pages in the site's main language) is never touched by the plugin.
Yes. Translation requests for every target language are fanned out in parallel, so adding more languages does not multiply the wait time. A 10-language site translates in roughly the same time window as a 2-language site.
Yes. Product titles, descriptions, short descriptions, attributes and variations are all translated automatically. When you run in WPML Connector Mode, install the free WooCommerce Multilingual & Multicurrency (WCML) add-on so WPML registers products, categories and tags as translatable — the plugin then feeds those translations automatically, and each shop only shows the products for the language being viewed.
Yes. When WPML (SitePress) is active, Transleti automatically switches to Connector Mode: WPML stays in charge of your languages, URLs, language switcher and stored translations, and Transleti works purely as the machine-translation engine behind it — no duplicate switchers or URLs. It translates your posts, pages, custom post types, WooCommerce products (with WCML), taxonomy terms, menus, slugs, SEO meta and interface strings into every WPML language you have set up. You can force plain Standalone mode from the Connector tab if you prefer Transleti to manage languages itself. TranslatePress and Polylang support is coming soon.
Yes. Elementor pages translate the underlying _elementor_data JSON; Divi pages translate the et_pb_* shortcode content and text attributes (headings, buttons, CTAs, blurbs, tabs and more); Gutenberg parses blocks and translates innerHTML and block attributes; classic posts translate post_content directly.
Yes. The plugin emits a separate <url> element per language in the sitemap (the format Google explicitly documents), with bidirectional hreflang and x-default. It also outputs <link rel="alternate" hreflang="..."> tags in the HTML head.
Yes. There are two ways: (1) the visual editor, which lets you click on any string in the rendered page and edit its translation in a side panel — useful for menus, buttons, widgets and theme strings that don't live in the post editor; and (2) each translated post is a standard WordPress post you can edit from the admin like any other content. Manual edits are detected and preserved during re-translation.
The plugin detects content changes via MD5 hashing and queues a re-translation. Manual edits to translations are detected and preserved (unless the source change is structural).
transleti_load_flag_font filter.transleti_load_webfonts filter.<title> could render empty and <html lang> could stay on the default language when an SEO plugin (e.g. Rank Math) built the document head before the language context was active. The output buffer now rewrites <html lang> to the current language and rebuilds an empty/missing <title> from the translated title, so search engines never see a blank title on a translated page.rankmath_sitemap_url() received an array, not a string) that could break the Rank Math sitemap and its hreflang alternates. The handler now accepts both, matching the SEOPress integration.Post - Site - Tagline), og:title and meta description are now fetched from the rendered page and translated proactively in the background batch, before the first visit — so search engines and social previews never see an English title on a translated page. A render-side gate holds a secondary-language page at 503 while its <title> is still untranslated, with a fail-open grace period so a title that never translates can't strand the page.www. secondary-language pages no longer bounce in a redirect loop.woocommerce_hydration_request_after_callbacks so hydrated responses are translated alongside live Store API calls.Word count type. Do not translate! hint (e.g. pt_BR returning "palavras"). Both the server-side _x() value and the client-side wp.i18n translation file entry are now sanitised back to a valid value./wc/store/v1/* without a language URL prefix from the localized React bundle. The plugin now falls back to HTTP_REFERER to detect the visitor's current language so Store API responses match the page they were requested from.window capture + pointerdown so theme menu togglers that call stopPropagation() can no longer swallow the selection click.pubDate/lastBuildDate strings in the "stuck translations" notice.language_has_translations() and find_original_slug() direct $wpdb probes with wp_cache_get / wp_cache_set (5-minute TTL, transleti cache group).phpcs:ignore comments explaining why the existing core API can't replace them.render_switcher, render_language_list) via esc_html().ob_start() callback buffer is now explicitly closed via a paired ob_end_flush() registered through register_shutdown_function() in the same function scope (frontend page buffer, AJAX response buffer, sitemap xhtml-namespace buffer).fopen/fread/fclose with WP_Filesystem::get_contents() for the diagnostic log reader.$wpdb->prepare( 'SHOW TABLES LIKE %s', ... ) (no more single-quote interpolation).$_POST reads on HTML-bearing fields to wp_kses_post( wp_unslash( ... ) ); integer reads now use absint( wp_unslash( ... ) ).check_admin_referer/wp_nonce_url) to the string-export download link.load_plugin_textdomain() call (WP 4.6+ auto-loads translations from the WP.org directory).phpcs:disable/enable blocks.<script> blocks to enqueued JS files (language switcher, editor preview).$_GET / $_POST / $_SERVER / $_COOKIE reads now go through wp_unslash() plus a context-appropriate sanitiser (sanitize_text_field, esc_url_raw).ajax_empty_language() now unslashes and sanitises the nonce before passing it to wp_verify_nonce().load_plugin_textdomain() call — translations are now auto-loaded by WordPress 4.6+ for plugins hosted in the directory.wp_redirect() to wp_safe_redirect() for additional protection against open-redirect attempts..pot template in languages/ so the Domain Path folder is present in the distributed package.<url> entry per language in the sitemap, matching Google's documented hreflang format.aioseo_sitemap_post/_term/_archive_entry/_addl_pages filters).xmlns:xhtml namespace now declared in <urlset> so <xhtml:link> alternates are valid XML./sitemap.xml no longer redirects to /en/sitemap.xml when add_subdirectory_to_default=yes.<loc> URLs now use the canonical default-language URL instead of the redirecting unprefixed permalink.%1$s placeholders and [cookie_*] shortcodes leaking to public pages.