-
-
Notifications
You must be signed in to change notification settings - Fork 39
docs: add QA checks documentation #1090
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
JanCizmar
wants to merge
11
commits into
main
Choose a base branch
from
jancizmar/qa-checks-docs
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
e484416
docs: add QA checks documentation page
JanCizmar 2a51a0f
docs: address PR review feedback on QA checks docs
JanCizmar cb001c8
docs: fix QA check type names to match UI labels
JanCizmar c0a5e17
docs: SEO improvements and cross-links for QA checks docs
JanCizmar 5d32f91
docs: address second round of PR feedback
JanCizmar c0f75a4
docs: remove ICU terminology from QA checks intro
JanCizmar 1088109
docs: use backticks for UI elements in QA checks docs
JanCizmar 09a0b3b
docs: consolidate QA checks into single page with recordings
JanCizmar d0981c0
docs: remove LanguageTool mention from check descriptions
JanCizmar 60ac508
docs: add inline highlights screen recording
JanCizmar 0967db8
docs: final polish for QA checks page
JanCizmar File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,192 @@ | ||
| --- | ||
| id: qa_checks | ||
| title: Translation QA Checks | ||
| sidebar_label: QA Checks | ||
| image: /img/og-images/platform.png | ||
| description: Automatically detect translation quality issues like missing placeholders, inconsistent punctuation, broken placeholder syntax, spelling and grammar errors with Tolgee's built-in localization QA checks. | ||
| --- | ||
|
|
||
| import { ScreenshotWrapper } from '../shared/_ScreenshotWrapper'; | ||
| import { ScreenRecording } from '../shared/_ScreenRecording'; | ||
|
|
||
| When managing translations across many languages, it's easy for localization errors to slip through. A translator might accidentally remove a placeholder, break [placeholder syntax](/platform/translation_process/icu_message_format), add extra spaces, or miss punctuation. These translation quality issues are hard to spot manually, especially at scale, and can lead to broken UI, missing data, or confusing user experiences. | ||
|
|
||
| QA Checks solve this by automatically validating your translations and flagging potential issues such as missing placeholders, broken placeholder syntax, inconsistent punctuation, spelling and grammar errors, and more. Issues are detected **in real time** as you type and also run in the background when translations are saved or modified in bulk. | ||
|
|
||
| {/* TODO: Screenshot - overview of QA checks panel in the translation editor showing a few issues */} | ||
|
|
||
| :::info Feature availability | ||
| QA Checks are available in advanced plans. [Upgrade your plan](https://tolgee.io/pricing) to use this feature. | ||
|
|
||
| If you use the self-hosted version, you must [set up the license](https://tolgee.io/pricing/self-hosted) to use this feature. | ||
| ::: | ||
|
|
||
| ## Enabling QA Checks | ||
|
|
||
| If you would like to start using QA checks, you have to enable them first. To enable QA checks | ||
|
|
||
| 1. Go to `Project settings` | ||
| 2. Find the `QA Checks` section | ||
| 3. Toggle QA Checks on | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/enable.webm" | ||
| alt="Enabling QA checks in project settings" | ||
| /> | ||
|
|
||
| Once enabled, Tolgee will automatically run checks on all translations in the project. You'll see a progress indicator while the initial check completes. | ||
|
|
||
| ## Available Check Types | ||
|
|
||
| Tolgee provides check types organized into two categories: **general checks** that catch common translation issues, and **syntax checks** that validate the structure of the translation itself. | ||
|
|
||
| ### General Checks | ||
|
|
||
| These checks catch common translation issues such as formatting inconsistencies, missing content, and spelling or grammar errors | ||
|
|
||
| | Check | Description | | ||
| |-------|-------------| | ||
| | **Empty translation** | Detects blank or whitespace-only translations (off by default) | | ||
| | **Spaces mismatch** | Leading/trailing space differences, doubled spaces, non-breaking spaces | | ||
| | **Unmatched new lines** | Missing or extra line breaks compared to the base translation | | ||
| | **Character case mismatch** | Capitalization differences (e.g., first letter case) | | ||
| | **Missing numbers** | Numeric values present in the base but missing in the translation | | ||
| | **Punctuation mismatch** | Missing, extra, or replaced punctuation marks | | ||
| | **Brackets mismatch** | Missing or extra brackets compared to the base | | ||
| | **Brackets unbalanced** | Unclosed or unopened brackets within the translation | | ||
| | **Special character mismatch** | Missing or extra special characters (off by default) | | ||
| | **Different URLs** | URLs that are missing, extra, or different from the base | | ||
| | **Key length limit** | Translation exceeds the key's configured [character limit](/platform/translation_keys/keys#character-limit) | | ||
| | **Spelling** | Spelling errors (off by default) | | ||
| | **Grammar** | Grammar errors (off by default) | | ||
| | **Repeated words** | Consecutive repeated words (e.g., "the the") | | ||
| | **Unresolved comments** | Translation has unresolved [comments](/platform/translation_process/comments) that should be addressed | | ||
|
|
||
| ### Syntax Checks | ||
|
|
||
| These checks validate the structure and syntax of the translation itself | ||
|
|
||
| | Check | Description | | ||
| |-------|-------------| | ||
| | **Inconsistent placeholders** | Variable placeholders (e.g., `{userName}`) missing or extra compared to the base | | ||
| | **Inconsistent HTML** | HTML tags missing or extra compared to the base | | ||
| | **HTML syntax** | Unclosed or unopened HTML tags | | ||
| | **ICU syntax** | Invalid [message format](/platform/translation_process/icu_message_format) (select, plural, choice expressions) | | ||
|
|
||
| ## Viewing QA Issues | ||
|
|
||
| ### In the Translation Editor | ||
|
|
||
| To help translators catch issues as they work, QA checks are shown directly in the translation editor. When you open a translation for editing, the QA checks panel appears below the text field. Each issue shows | ||
|
|
||
| - The **check type** (e.g., "Spaces mismatch") | ||
| - A **description** of what was detected | ||
| - A **suggested replacement** when available, with highlighted differences | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/translations_view.webm" | ||
| alt="QA checks panel in the translation editor showing issues" | ||
| /> | ||
|
|
||
| Issues are updated **in real time** as you type, so you get immediate feedback on your changes. | ||
|
|
||
| ### Inline Highlights | ||
|
|
||
| Problematic text spans are highlighted directly in the translation editor. Hovering over a highlight shows the issue details and a suggested fix. | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/inline_highlights.webm" | ||
| alt="Inline highlights showing issue details on hover" | ||
| /> | ||
|
|
||
| ### QA Badge | ||
|
|
||
| A QA badge appears next to translations in the translations list view when there are open issues or checks are still running | ||
|
|
||
| - **Badge with count** - number of open issues | ||
| - **Spinner** - checks are still running (e.g., after an [import](/platform/projects_and_organizations/import) or settings change) | ||
|
|
||
| When all issues are resolved, the badge disappears. | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/spinner.webm" | ||
| alt="QA badge showing spinner while checks are running" | ||
| /> | ||
|
|
||
| ## Fixing Issues | ||
|
|
||
| ### One-Click Corrections | ||
|
|
||
| When a check provides a suggested replacement, you can apply it with a single click on the `Correct` button. The fix is applied directly to the translation text. | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/correct.webm" | ||
| alt="Clicking Correct to apply a suggested fix" | ||
| /> | ||
|
|
||
| ### Ignoring Issues | ||
|
|
||
| Sometimes a flagged issue is intentional or a false positive. For example, you might deliberately omit a placeholder in a specific language, or a grammar check might not understand a domain-specific term. In these cases, you can `Ignore` the issue. Ignored issues won't count toward the issue total and won't appear as warnings. | ||
|
|
||
| To ignore an issue, click the `Ignore` button next to it in the QA panel. You can also `Unignore` it later if needed. | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/ignoer.webm" | ||
| alt="Ignoring and unignoring a QA issue" | ||
| /> | ||
|
|
||
| ## Configuring Check Severity | ||
|
|
||
| You can customize which checks are active and their severity at both the **project level** and the **language level**. | ||
|
|
||
| ### Project-Level Settings | ||
|
|
||
| To configure QA checks for your entire project | ||
|
|
||
| 1. Go to `Project settings` > `QA Checks` | ||
| 2. For each check type, set the severity | ||
| - `Warning` - the check is active and issues are reported | ||
| - `Off` - the check is disabled | ||
|
|
||
| *Currently, only two severity levels are supported: `Warning` and `Off`. More severity levels may be added in the future.* | ||
|
|
||
| Most checks default to `Warning`. The exceptions are **Empty translation**, **Special character mismatch**, **Spelling**, and **Grammar**, which default to `Off`. | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/project_level_qa_settings.webm" | ||
| alt="Configuring QA check severity in project settings" | ||
| /> | ||
|
|
||
| ### Language-Level Overrides | ||
|
|
||
| Some checks may not be relevant for all languages. For example, character case checks don't apply to languages without case distinctions, and certain punctuation rules differ across writing systems. Language-level overrides let you fine-tune settings for these cases. | ||
|
|
||
| To configure overrides for a specific language | ||
|
|
||
| 1. Go to `Project settings` > `QA Checks` | ||
| 2. Click on the `Language overrides` section | ||
| 3. Select a language and adjust the settings | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/language_level_qa_settings.webm" | ||
| alt="Configuring language-level QA check overrides" | ||
| /> | ||
|
|
||
| Language-level settings always take precedence over project-level settings. Changing project settings does not affect languages that already have overrides. You can reset a language back to project defaults at any time. | ||
|
|
||
| ## When QA Checks Run | ||
|
|
||
| QA checks run in real time as you type in the translation editor, so you get immediate feedback without saving first. When you save a translation, all enabled checks run again and results are persisted. This also applies to [imported](/platform/projects_and_organizations/import) translations. The QA badge and issue counts are updated accordingly. | ||
|
|
||
| The system is designed to handle all rechecking automatically, so you should never need to trigger a manual recheck under normal circumstances. However, as a last resort, you can manually trigger a full QA recheck for all translations in a project from the translations view using [batch operations](/platform/translation_keys/batch_operations). | ||
|
|
||
| <ScreenRecording | ||
| src="/img/docs/platform/qa-checks/recheck_batch.webm" | ||
| alt="Triggering a full QA recheck via batch operations" | ||
| /> | ||
|
|
||
| Checks are also automatically re-run when the base language translation changes, a language tag is changed, or [branches are merged](/platform/branching/merging_branches). | ||
|
|
||
| ### Plural Translations | ||
|
|
||
| For translations that use plural forms, QA checks run separately on each plural variant. Issues are reported per variant, so you can see exactly which form has the problem. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.