=== Saasco Multilingual Translation ===
Contributors: saascopl
Tags: multilingual, translation, multilanguage, hreflang, woocommerce
Requires at least: 6.5
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 0.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Translate your WordPress site into multiple languages with AI, review and edit every translation, and keep them in sync as content changes.

== Description ==

Saasco Multilingual Translation is built around the hardest part of running a multilingual site: what happens **after** the first translation.

Getting a site into two languages is the easy part. Keeping them in sync is not: you fix a typo in the source, and suddenly a whole page is marked for review — or a full retranslation wipes out your manual corrections. Saasco Multilingual Translation tracks each block separately, so it can tell you which two paragraphs changed, and touch only those.

= What you get for free =

* **Unlimited languages**, each with its own server-rendered URL that search engines can crawl and index.
* **Complete multilingual SEO**: correct hreflang with x-default, self-referencing canonical, translated slugs and meta, clean XML sitemap — all included in the free plugin.
* **A language switcher that works in block themes** — available as a block, a widget, a shortcode and a menu item. When a page has no translation yet, it points at the closest match, never at the source-language home page.
* **A side-by-side editor**: source on the left, translation on the right, segment by segment.
* **Bring your own AI key** (DeepL or OpenAI), with no limit. The provider bills you directly. You pay the provider directly for what you use, and the free plugin never caps how much you translate with your own key.
* **Interface strings** from your theme and plugins, so a page in another language is in that language all the way through.
* **WooCommerce basics**: products, categories, cart and checkout in the visitor's language.
* **Import from Polylang**, resumable and safe — your Polylang data is left untouched.

= Translate content, not code =

The translation engine never sees your HTML. It gets a sentence with lightweight position markers — `Order <0>today</0>` — and never the classes, URLs or data attributes around it. That is why Saasco Multilingual Translation cannot break your layout: it never touches it.

= Your translations. Your database. =

Everything lives in your own WordPress database as ordinary posts. No external server sits in your page rendering. Nothing disappears if you stop paying for anything — there is nothing to stop paying for on the free plan, and even the PRO licence only ever controls updates and support.

== Installation ==

1. Install the plugin from **Plugins → Add New**, or upload the ZIP under **Plugins → Add New → Upload Plugin**, then activate it.
2. Activation opens the setup wizard (**Saasco Multilingual Translation → Set up**). In **Which languages?**, add the language your content is already written in — it becomes the source — then add the languages you want to translate into.
3. In **How should addresses look?**, choose the URL prefixes. Each language gets its own server-rendered address, for example `/de/` and `/fr/`. You can also give the source language a prefix of its own.
4. In **Let visitors switch**, place the language switcher. It is available as a block, a widget, a menu item under **Appearance → Menus**, and as the `[saasco_mt_switcher]` shortcode.
5. Optionally connect a machine-translation provider under **Saasco Multilingual Translation → AI and providers**. Paste your own DeepL or OpenAI key — it is stored encrypted in your database and sent only to that provider. You can skip this and translate everything by hand.
6. Open any post or page and choose **Translate**. The side-by-side editor shows the source on the left and the translation on the right, segment by segment; save to publish the translated version at its own URL.

== Frequently Asked Questions ==

= Do I need an API key? =

No. You can translate everything by hand. The AI key is optional and it is yours — Saasco Multilingual Translation never sees your text or your key.

= What happens if I deactivate the plugin? =

Your translations stay in the database as normal posts. Uninstalling does not delete them either, unless you explicitly turn that on in the settings.

= Does it work with page builders? =

Gutenberg, Elementor and Bricks are handled at text level in the free version. Full Divi, ACF repeaters and synced blocks are part of PRO.

= Will it slow my site down? =

Translations are stored, not generated on the fly. Saasco Multilingual Translation adds at most four database queries to a front-end request and makes zero outbound HTTP calls while rendering a page.

== External services ==

Saasco Multilingual Translation makes no external requests while rendering your site, and none at all unless you connect a machine-translation provider yourself. If you do, the plugin sends the text of the segments you ask it to translate (with lightweight position markers, never your HTML, URLs or attributes), plus the source and target language codes, to the provider you configured, using the API key you provide. This happens only when you or a background job you started requests a machine translation, and when you test the key on the settings screen.

* **DeepL** (api.deepl.com / api-free.deepl.com) — [Terms](https://www.deepl.com/pro-license) · [Privacy policy](https://www.deepl.com/privacy)
* **OpenAI** (api.openai.com) — [Terms of use](https://openai.com/policies/terms-of-use) · [Privacy policy](https://openai.com/policies/privacy-policy)

Your API key is stored encrypted in your own database and is sent only to the provider it belongs to. Saasco Multilingual Translation has no server of its own in this flow and never receives your text, your key or your usage.

== Source code ==

The admin interface is built with @wordpress/scripts. The human-readable sources are shipped in the `assets/` directory of this plugin; `build/` contains the compiled output. Rebuild with `npm install && npm run build` in the plugin root.

== Screenshots ==

1. Translation health: what is up to date, what changed at the source, what was never translated.
2. Side-by-side editor with per-segment status.
3. Word-level diff of what changed in the source (PRO).
4. Languages screen with URL prefixes, hreflang and writing direction.

== Changelog ==

= 0.1.0 =
* First release.
