# 1. Multi-Language Support — Test Cases

User Type: **Super Administrator**
Source: *Mi Digital Academy - Education CRM Features Document*
Spec: multi_language_support.md — every feature, sub-feature, and rule covered

## Test Execution Policy

- Zero tolerance: any deviation from the documented behavior is a defect.
- Every failed test is logged with a Bug ID, the feature, the sub-feature, the expected vs actual result, and the severity; 100% of bugs are fixed before the group passes.
- 100% pass rate is required for the group to be marked complete.

## Coverage Matrix

| Feature | Sub-feature / Rule | Test IDs |
|---------|--------------------|----------|
| 1.1 Interface Language Configuration | Language enablement: interface languages toggled on or off | TC-SA-ACC-01-001 |
| 1.1 Interface Language Configuration | Default language: the platform's default interface language | TC-SA-ACC-01-002 |
| 1.1 Interface Language Configuration | Translation coverage: the percentage of UI strings translated per language | TC-SA-ACC-01-003 |
| 1.1 Interface Language Configuration | Language list: the supported languages with their status | TC-SA-ACC-01-004 |
| 1.1 Interface Language Configuration | Fallback behavior: untranslated strings fall back to the default language | TC-SA-ACC-01-005 |
| 1.1 Interface Language Configuration | Rule: the last enabled language cannot be disabled | TC-SA-ACC-01-006 |
| 1.1 Interface Language Configuration | Rule: the default language must be an enabled language | TC-SA-ACC-01-007 |
| 1.1 Interface Language Configuration | Rule: a 0% coverage language is flagged as incomplete | TC-SA-ACC-01-008 |
| 1.1 Interface Language Configuration | Rule: fallback is per string | TC-SA-ACC-01-009 |
| 1.1 Interface Language Configuration | Rule: configuration changes are audit-logged | TC-SA-ACC-01-010 |
| 1.2 Video Subtitle Management | Subtitle upload: subtitle tracks uploaded per video and language | TC-SA-ACC-01-011 |
| 1.2 Video Subtitle Management | Subtitle review: subtitle tracks reviewed before publication | TC-SA-ACC-01-012 |
| 1.2 Video Subtitle Management | Subtitle publication: subtitle tracks published per video and language | TC-SA-ACC-01-013 |
| 1.2 Video Subtitle Management | Default subtitle behavior: subtitles on/off by default and the default language | TC-SA-ACC-01-014 |
| 1.2 Video Subtitle Management | Subtitle list: the subtitle tracks per video with language and status | TC-SA-ACC-01-015 |
| 1.2 Video Subtitle Management | Rule: an unreviewed track is not learner-visible | TC-SA-ACC-01-016 |
| 1.2 Video Subtitle Management | Rule: an invalid subtitle file is rejected on upload | TC-SA-ACC-01-017 |
| 1.2 Video Subtitle Management | Rule: a language already covered is replaced on re-upload | TC-SA-ACC-01-018 |
| 1.2 Video Subtitle Management | Rule: a video with no track shows no subtitle option | TC-SA-ACC-01-019 |
| 1.2 Video Subtitle Management | Rule: subtitle changes are audit-logged | TC-SA-ACC-01-020 |
| 1.3 Dubbed Video Management | Dubbed version upload: dubbed versions uploaded per language | TC-SA-ACC-01-021 |
| 1.3 Dubbed Video Management | Dubbed version publication: dubbed versions published per video and language | TC-SA-ACC-01-022 |
| 1.3 Dubbed Video Management | Default audio language: the default audio track per video | TC-SA-ACC-01-023 |
| 1.3 Dubbed Video Management | Dubbing coverage: the share of videos dubbed per language | TC-SA-ACC-01-024 |
| 1.3 Dubbed Video Management | Dubbed version list: the dubbed versions per video with language and status | TC-SA-ACC-01-025 |
| 1.3 Dubbed Video Management | Rule: an unreviewed dubbed version is not learner-visible | TC-SA-ACC-01-026 |
| 1.3 Dubbed Video Management | Rule: a dubbed version with sync issues is flagged and not published | TC-SA-ACC-01-027 |
| 1.3 Dubbed Video Management | Rule: the default audio must be a published version | TC-SA-ACC-01-028 |
| 1.3 Dubbed Video Management | Rule: a missing dubbed version falls back to the original audio | TC-SA-ACC-01-029 |
| 1.3 Dubbed Video Management | Rule: dubbed version changes are audit-logged | TC-SA-ACC-01-030 |
| 1.4 AI Translation Settings & Language Availability | AI translation enablement: AI translation toggled on per content type | TC-SA-ACC-01-031 |
| 1.4 AI Translation Settings & Language Availability | Quality threshold: the minimum quality score for AI output | TC-SA-ACC-01-032 |
| 1.4 AI Translation Settings & Language Availability | Human review requirement: AI output requiring human review | TC-SA-ACC-01-033 |
| 1.4 AI Translation Settings & Language Availability | Language availability per content: the languages available per content item | TC-SA-ACC-01-034 |
| 1.4 AI Translation Settings & Language Availability | Translation status: the translation state per content item and language | TC-SA-ACC-01-035 |
| 1.4 AI Translation Settings & Language Availability | Rule: AI translation applies only to enabled content types | TC-SA-ACC-01-036 |
| 1.4 AI Translation Settings & Language Availability | Rule: AI output below the threshold is never auto-published | TC-SA-ACC-01-037 |
| 1.4 AI Translation Settings & Language Availability | Rule: learners see only available languages | TC-SA-ACC-01-038 |
| 1.4 AI Translation Settings & Language Availability | Rule: a reviewed AI translation is not re-processed | TC-SA-ACC-01-039 |
| 1.4 AI Translation Settings & Language Availability | Rule: settings changes are audit-logged | TC-SA-ACC-01-040 |

### TC-SA-ACC-01-001 — Language enablement: interface languages toggled on or off
**Type:** Positive
**Covers:** 1.1 → Language enablement: interface languages toggled on or off
**Preconditions:** A Super Admin account is active; at least two languages exist.
**Steps:**
1. As a Super Admin, enable a new interface language and save.
2. Switch the UI to the new language.
3. Observe the result and verify the full behavior: the UI is available in the enabled language.
**Expected Result:** The language enablement works — the UI is available in the enabled language, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-002 — Default language: the platform's default interface language
**Type:** Positive
**Covers:** 1.1 → Default language: the platform's default interface language
**Preconditions:** A Super Admin account is active.
**Steps:**
1. As a Super Admin, set the default language and save.
2. Open the platform UI without selecting a language.
3. Observe the result and verify the full behavior: the UI loads in the default language.
**Expected Result:** The default language is applied — the UI loads in the default language, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-003 — Translation coverage: the percentage of UI strings translated per language
**Type:** Positive
**Covers:** 1.1 → Translation coverage: the percentage of UI strings translated per language
**Preconditions:** A Super Admin account is active; a language has partial translations.
**Steps:**
1. As a Super Admin, open the language list.
2. Observe the result and verify the full behavior: the translation coverage percentage is shown per language.
**Expected Result:** The translation coverage is shown — the percentage per language is visible, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-004 — Language list: the supported languages with their status
**Type:** Positive
**Covers:** 1.1 → Language list: the supported languages with their status
**Preconditions:** A Super Admin account is active; multiple languages exist in various states.
**Steps:**
1. As a Super Admin, open the language list.
2. Observe the result and verify the full behavior: the supported languages are shown with their status (enabled, disabled, coverage).
**Expected Result:** The language list is shown — the languages with their status are visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-005 — Fallback behavior: untranslated strings fall back to the default language
**Type:** Positive
**Covers:** 1.1 → Fallback behavior: untranslated strings fall back to the default language
**Preconditions:** A Super Admin account is active; a language has an untranslated string.
**Steps:**
1. As a Super Admin, switch the UI to the partially translated language.
2. Navigate to the untranslated string.
3. Observe the result and verify the full behavior: the string is shown in the default language.
**Expected Result:** The fallback works — the untranslated string is shown in the default language, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-006 — Rule: the last enabled language cannot be disabled
**Type:** Negative
**Covers:** 1.1 → Rule: at least one language must remain enabled; the last enabled language cannot be disabled
**Preconditions:** A Super Admin account is active; only one language is enabled.
**Steps:**
1. As a Super Admin, attempt to disable the last enabled language.
2. Observe the result and verify the full behavior: the disable is blocked with a validation message.
**Expected Result:** The disable is blocked — the last enabled language cannot be disabled, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-007 — Rule: the default language must be an enabled language
**Type:** Negative
**Covers:** 1.1 → Rule: the default language must be an enabled language; changing the default to a disabled language is rejected
**Preconditions:** A Super Admin account is active; a language is disabled.
**Steps:**
1. As a Super Admin, attempt to set the default language to the disabled language.
2. Observe the result and verify the full behavior: the change is rejected with a validation message.
**Expected Result:** The change is rejected — the default cannot be a disabled language, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-008 — Rule: a 0% coverage language is flagged as incomplete
**Type:** Positive
**Covers:** 1.1 → Rule: a language with 0% translation coverage can be enabled but is flagged as incomplete
**Preconditions:** A Super Admin account is active; a language has 0% coverage.
**Steps:**
1. As a Super Admin, enable the 0% coverage language.
2. Open the language list.
3. Observe the result and verify the full behavior: the language is enabled and flagged as incomplete.
**Expected Result:** The language is flagged incomplete — the flag is shown, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-009 — Rule: fallback is per string
**Type:** Positive
**Covers:** 1.1 → Rule: fallback is per string; a partially translated language shows translated strings in that language and the rest in the default
**Preconditions:** A Super Admin account is active; a language has some translated and some untranslated strings.
**Steps:**
1. As a Super Admin, switch the UI to the partially translated language.
2. Observe multiple strings.
3. Observe the result and verify the full behavior: translated strings appear in the language; untranslated strings appear in the default.
**Expected Result:** The per-string fallback works — mixed rendering is correct, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-010 — Rule: configuration changes are audit-logged
**Type:** Positive
**Covers:** 1.1 → Audit logging of interface language configuration
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the interface language configuration and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The configuration change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-011 — Subtitle upload: subtitle tracks uploaded per video and language
**Type:** Positive
**Covers:** 1.2 → Subtitle upload: subtitle tracks (SRT/VTT) uploaded per video and language
**Preconditions:** A Super Admin account is active; a valid SRT file is ready.
**Steps:**
1. As a Super Admin, open a video and upload the subtitle track for a language.
2. Complete the upload.
3. Observe the result and verify the full behavior: the subtitle track is uploaded and appears in the subtitle list.
**Expected Result:** The subtitle track is uploaded — it appears in the subtitle list, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-012 — Subtitle review: subtitle tracks reviewed before publication
**Type:** Positive
**Covers:** 1.2 → Subtitle review: subtitle tracks reviewed before publication
**Preconditions:** A Super Admin account is active; a subtitle track is uploaded.
**Steps:**
1. As a Super Admin, open the uploaded track and review the timing and text.
2. Mark the review complete.
3. Observe the result and verify the full behavior: the track's status shows reviewed.
**Expected Result:** The review works — the track is marked reviewed, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-013 — Subtitle publication: subtitle tracks published per video and language
**Type:** Positive
**Covers:** 1.2 → Subtitle publication: subtitle tracks published per video and language
**Preconditions:** A Super Admin account is active; a subtitle track is reviewed.
**Steps:**
1. As a Super Admin, publish the reviewed track.
2. Play the video as a learner.
3. Observe the result and verify the full behavior: the subtitle track is available to learners for that video and language.
**Expected Result:** The publication works — the track is learner-visible, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-014 — Default subtitle behavior: subtitles on/off by default and the default language
**Type:** Positive
**Covers:** 1.2 → Default subtitle behavior: subtitles on/off by default and the default language
**Preconditions:** A Super Admin account is active; subtitle tracks are published.
**Steps:**
1. As a Super Admin, set the default subtitle behavior (on, default language) and save.
2. Play the video as a learner without changing settings.
3. Observe the result and verify the full behavior: subtitles are on by default in the default language.
**Expected Result:** The default behavior is applied — subtitles are on in the default language, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-015 — Subtitle list: the subtitle tracks per video with language and status
**Type:** Positive
**Covers:** 1.2 → Subtitle list: the subtitle tracks per video with language and status
**Preconditions:** A Super Admin account is active; multiple subtitle tracks exist.
**Steps:**
1. As a Super Admin, open the subtitle list for a video.
2. Observe the result and verify the full behavior: the tracks are shown with language and status.
**Expected Result:** The subtitle list is shown — the tracks with language and status are visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-016 — Rule: an unreviewed track is not learner-visible
**Type:** Negative
**Covers:** 1.2 → Rule: a subtitle track is published only after review; an unreviewed track is not learner-visible
**Preconditions:** A Super Admin account is active; a subtitle track is uploaded but not reviewed.
**Steps:**
1. As a Super Admin, confirm the track is unreviewed.
2. Play the video as a learner.
3. Observe the result and verify the full behavior: the unreviewed track is not available to the learner.
**Expected Result:** The unreviewed track is hidden — it is not learner-visible, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-017 — Rule: an invalid subtitle file is rejected on upload
**Type:** Negative
**Covers:** 1.2 → Rule: a subtitle file with invalid timing or format is rejected on upload with the reason
**Preconditions:** A Super Admin account is active; a subtitle file with invalid timing is ready.
**Steps:**
1. As a Super Admin, attempt to upload the invalid file.
2. Observe the result and verify the full behavior: the upload is rejected with the specific reason.
**Expected Result:** The invalid file is rejected — the reason is shown, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-018 — Rule: a language already covered is replaced on re-upload
**Type:** Positive
**Covers:** 1.2 → Rule: a language already covered is replaced on re-upload
**Preconditions:** A Super Admin account is active; a subtitle track for a language exists.
**Steps:**
1. As a Super Admin, re-upload a new track for the same language.
2. Open the subtitle list.
3. Observe the result and verify the full behavior: the new track replaces the old one for that language.
**Expected Result:** The replacement works — one track per language, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-019 — Rule: a video with no track shows no subtitle option
**Type:** Positive
**Covers:** 1.2 → Rule: a video with no subtitle track shows no subtitle option; the default behavior does not force an empty track
**Preconditions:** A Super Admin account is active; a video has no subtitle tracks.
**Steps:**
1. As a Super Admin, play the video as a learner.
2. Observe the player controls.
3. Observe the result and verify the full behavior: no subtitle option is shown.
**Expected Result:** No subtitle option is shown — no empty track is forced, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-020 — Rule: subtitle changes are audit-logged
**Type:** Positive
**Covers:** 1.2 → Audit logging of subtitle management
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, publish a subtitle track.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The subtitle change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-021 — Dubbed version upload: dubbed versions uploaded per language
**Type:** Positive
**Covers:** 1.3 → Dubbed version upload: dubbed audio/video versions uploaded per language
**Preconditions:** A Super Admin account is active; a dubbed video file is ready.
**Steps:**
1. As a Super Admin, open a video and upload the dubbed version for a language.
2. Complete the upload.
3. Observe the result and verify the full behavior: the dubbed version is uploaded and appears in the list.
**Expected Result:** The dubbed version is uploaded — it appears in the dubbed version list, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-022 — Dubbed version publication: dubbed versions published per video and language
**Type:** Positive
**Covers:** 1.3 → Dubbed version publication: dubbed versions published per video and language
**Preconditions:** A Super Admin account is active; a dubbed version is reviewed.
**Steps:**
1. As a Super Admin, publish the reviewed dubbed version.
2. Play the video as a learner and select the language.
3. Observe the result and verify the full behavior: the dubbed audio plays for that language.
**Expected Result:** The publication works — the dubbed version is learner-visible, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-023 — Default audio language: the default audio track per video
**Type:** Positive
**Covers:** 1.3 → Default audio language: the default audio track per video
**Preconditions:** A Super Admin account is active; multiple dubbed versions are published.
**Steps:**
1. As a Super Admin, set the default audio language for the video and save.
2. Play the video as a learner without changing settings.
3. Observe the result and verify the full behavior: the default audio language plays.
**Expected Result:** The default audio is applied — the default language plays, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-024 — Dubbing coverage: the share of videos dubbed per language
**Type:** Positive
**Covers:** 1.3 → Dubbing coverage: the share of videos dubbed per language
**Preconditions:** A Super Admin account is active; some videos are dubbed per language.
**Steps:**
1. As a Super Admin, open the dubbing coverage view.
2. Observe the result and verify the full behavior: the share of videos dubbed is shown per language.
**Expected Result:** The dubbing coverage is shown — the share per language is visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-025 — Dubbed version list: the dubbed versions per video with language and status
**Type:** Positive
**Covers:** 1.3 → Dubbed version list: the dubbed versions per video with language and status
**Preconditions:** A Super Admin account is active; multiple dubbed versions exist.
**Steps:**
1. As a Super Admin, open the dubbed version list for a video.
2. Observe the result and verify the full behavior: the versions are shown with language and status.
**Expected Result:** The dubbed version list is shown — the versions with language and status are visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-026 — Rule: an unreviewed dubbed version is not learner-visible
**Type:** Negative
**Covers:** 1.3 → Rule: a dubbed version is published only after review; an unreviewed version is not learner-visible
**Preconditions:** A Super Admin account is active; a dubbed version is uploaded but not reviewed.
**Steps:**
1. As a Super Admin, confirm the version is unreviewed.
2. Play the video as a learner.
3. Observe the result and verify the full behavior: the unreviewed version is not available.
**Expected Result:** The unreviewed version is hidden — it is not learner-visible, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-027 — Rule: a dubbed version with sync issues is flagged and not published
**Type:** Negative
**Covers:** 1.3 → Rule: a dubbed version with audio/video sync issues is flagged and not published
**Preconditions:** A Super Admin account is active; a dubbed version has sync issues.
**Steps:**
1. As a Super Admin, review the dubbed version and note the sync issues.
2. Attempt to publish it.
3. Observe the result and verify the full behavior: the version is flagged and publication is blocked.
**Expected Result:** The sync-issue version is flagged — it is not published, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-028 — Rule: the default audio must be a published version
**Type:** Negative
**Covers:** 1.3 → Rule: the default audio language must be one of the published versions for that video
**Preconditions:** A Super Admin account is active; a language has no published dubbed version.
**Steps:**
1. As a Super Admin, attempt to set the default audio to the unpublished language.
2. Observe the result and verify the full behavior: the change is rejected.
**Expected Result:** The change is rejected — the default must be a published version, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-029 — Rule: a missing dubbed version falls back to the original audio
**Type:** Positive
**Covers:** 1.3 → Rule: a video without a dubbed version for a language falls back to the original audio
**Preconditions:** A Super Admin account is active; a video has no dubbed version for a learner's language.
**Steps:**
1. As a learner, select the language with no dubbed version.
2. Play the video.
3. Observe the result and verify the full behavior: the original audio plays.
**Expected Result:** The fallback works — the original audio plays, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-030 — Rule: dubbed version changes are audit-logged
**Type:** Positive
**Covers:** 1.3 → Audit logging of dubbed video management
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, publish a dubbed version.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The dubbed version change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-031 — AI translation enablement: AI translation toggled on per content type
**Type:** Positive
**Covers:** 1.4 → AI translation enablement: AI translation toggled on per content type
**Preconditions:** A Super Admin account is active.
**Steps:**
1. As a Super Admin, enable AI translation for descriptions and save.
2. Add a new description in the default language.
3. Observe the result and verify the full behavior: the description is auto-translated for the enabled target languages.
**Expected Result:** The AI translation enablement works — the enabled content type is auto-translated, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-032 — Quality threshold: the minimum quality score for AI output
**Type:** Positive
**Covers:** 1.4 → Quality threshold: the minimum quality score for AI output to be accepted
**Preconditions:** A Super Admin account is active; the quality threshold is set to 80.
**Steps:**
1. As a Super Admin, trigger an AI translation that scores 85.
2. Observe the result and verify the full behavior: the output is accepted per the threshold.
**Expected Result:** The quality threshold is applied — the above-threshold output is accepted, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-033 — Human review requirement: AI output requiring human review
**Type:** Positive
**Covers:** 1.4 → Human review requirement: AI output requiring human review before publication
**Preconditions:** A Super Admin account is active; human review is required for AI output.
**Steps:**
1. As a Super Admin, trigger an AI translation.
2. Observe the output state.
3. Observe the result and verify the full behavior: the output is held for human review and not published until approved.
**Expected Result:** The review requirement is enforced — the output is held until approved, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-034 — Language availability per content: the languages available per content item
**Type:** Positive
**Covers:** 1.4 → Language availability per content: the languages available per content item
**Preconditions:** A Super Admin account is active; a content item has two languages available.
**Steps:**
1. As a Super Admin, set the language availability for the content item and save.
2. View the content as a learner.
3. Observe the result and verify the full behavior: only the available languages are shown.
**Expected Result:** The language availability is applied — only the available languages are shown, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-035 — Translation status: the translation state per content item and language
**Type:** Positive
**Covers:** 1.4 → Translation status: the translation state per content item and language
**Preconditions:** A Super Admin account is active; content items have various translation states.
**Steps:**
1. As a Super Admin, open the translation status view.
2. Observe the result and verify the full behavior: the translation state is shown per content item and language.
**Expected Result:** The translation status is shown — the state per item and language is visible, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-036 — Rule: AI translation applies only to enabled content types
**Type:** Negative
**Covers:** 1.4 → Rule: AI translation applies only to enabled content types; other content is not auto-translated
**Preconditions:** A Super Admin account is active; AI translation is enabled for descriptions only.
**Steps:**
1. As a Super Admin, add a new worksheet (a non-enabled type).
2. Observe the result and verify the full behavior: the worksheet is not auto-translated.
**Expected Result:** The non-enabled type is not translated — the enablement scope is enforced, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-037 — Rule: AI output below the threshold is never auto-published
**Type:** Negative
**Covers:** 1.4 → Rule: AI output below the quality threshold is never auto-published; it is flagged for review or rejected
**Preconditions:** A Super Admin account is active; the quality threshold is 80.
**Steps:**
1. As a Super Admin, trigger an AI translation that scores 60.
2. Observe the output state.
3. Observe the result and verify the full behavior: the output is flagged for review or rejected, not published.
**Expected Result:** The below-threshold output is not published — it is flagged or rejected, delivered exactly as documented.
**Priority:** Critical

### TC-SA-ACC-01-038 — Rule: learners see only available languages
**Type:** Positive
**Covers:** 1.4 → Rule: a content item shows only its available languages to learners; unavailable languages are hidden
**Preconditions:** A Super Admin account is active; a content item has one language available.
**Steps:**
1. As a learner, open the content item's language selector.
2. Observe the result and verify the full behavior: only the available language is shown; unavailable languages are hidden.
**Expected Result:** Only available languages are shown — unavailable languages are hidden, delivered exactly as documented.
**Priority:** High

### TC-SA-ACC-01-039 — Rule: a reviewed AI translation is not re-processed
**Type:** Positive
**Covers:** 1.4 → Rule: a human-reviewed and approved AI translation is marked as reviewed; it is not re-processed
**Preconditions:** A Super Admin account is active; an AI translation was reviewed and approved.
**Steps:**
1. As a Super Admin, trigger a re-run of the translation pipeline.
2. Check the approved translation.
3. Observe the result and verify the full behavior: the approved translation is unchanged and not re-processed.
**Expected Result:** The reviewed translation is preserved — it is not re-processed, delivered exactly as documented.
**Priority:** Medium

### TC-SA-ACC-01-040 — Rule: settings changes are audit-logged
**Type:** Positive
**Covers:** 1.4 → Audit logging of AI translation and language availability settings
**Preconditions:** A Super Admin account is active; the audit log is accessible.
**Steps:**
1. As a Super Admin, change the AI translation settings and save.
2. Open the audit log.
3. Observe the result and verify the full behavior: the change is recorded with the actor and timestamp.
**Expected Result:** The settings change is audit-logged — the actor and timestamp are recorded, delivered exactly as documented.
**Priority:** High
