# Changelog of SiteVerdict — Translation QA & AI Translator (JSON, PO, XLIFF) (`siteverdict/siteverdict-translation-qa`) Actor

- **URL**: https://apify.com/siteverdict/siteverdict-translation-qa/changelog.md
- **Full Actor documentation**: https://apify.com/siteverdict/siteverdict-translation-qa.md

## Changelog

### 1.1.0 — 2026-11-03

- Billing: never charges past your maximum total charge. Money is now reserved per string across all three events (`string-checked`, `string-translated`, `string-ai-reviewed`); strings that would not fit are not processed and not charged.
- Skipped strings get an explicit `not_processed` dataset row per file/locale, `OUTPUT.notProcessedStrings`, and the status message ends with "N strings not processed (max total charge reached)". An exactly used-up budget is no longer reported as stopped.
- A file/locale with no strings no longer stops the remaining files.
- README: lists every provider and host called (DeepL, OpenAI, Anthropic, Google Gemini, Mistral) and states that translation/AI review need your own key.
- Contact address changed to hello@webrevenuescan.com.

### 1.0.0 — 2026-10-11

- First release.
- Formats:
  - JSON (nested/flat, ARB metadata kept)
  - gettext PO (context, plurals, fuzzy, multi-line, obsolete)
  - XLIFF 1.2/2.0 (inline tags kept, maxwidth, review states)
  - CSV (key + locale columns, or key/source/target)
- Deterministic checks (no key):
  - missing, empty, extra and untranslated strings
  - placeholders (ICU, i18next, printf, Python, template literals) and ICU syntax
  - CLDR plural categories and markup tags
  - hard and ratio length limits, whitespace, newlines and punctuation
  - numbers and URLs
  - glossary, forbidden and do-not-translate terms
  - formality heuristics for de/fr/es/it/nl/pt, inconsistent translations and fuzzy flags
- Optional translation (translate-missing / translate-all) with the user's own DeepL, OpenAI or Anthropic key:
  - placeholders are protected and verified, and broken results are rejected
  - updated files are written in their original format
- Optional AI review with the user's own LLM key (OpenAI/Anthropic/Google/Mistral) returns issues with suggestions.
- Output: `REPORT.html` (per-locale scores), `ISSUES.csv`, an `OUTPUT` summary and a `failOnErrors` CI gate.
- Pay-per-event: `string-checked`, `string-translated` and `string-ai-reviewed`.
