# How to Implement Localization and String Freeze Workflows in Claude Code Game Studios

> Implement localization and string freeze workflows in Claude Code Game Studios. Extract strings, enforce freezes, and run QA checks for seamless releases. Learn more.

- Repository: [Donchitos/Claude-Code-Game-Studios](https://github.com/Donchitos/Claude-Code-Game-Studios)
- Tags: how-to-guide
- Published: 2026-04-16

---

**Use the `/localize` skill to extract hard-coded strings into CSV files, enforce a string freeze via [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md), and run QA checks before the release manager validates the build.**

The **Donchitos/Claude-Code-Game-Studios** repository provides a production-ready localization pipeline designed for game development workflows. This system automates the extraction of player-facing strings, manages translation assets, and implements strict **string freeze workflows** to prevent last-minute text changes that could destabilize localized builds.

## Architecture of the Localization Pipeline

The localization workflow operates as a series of discrete phases orchestrated by the `/localize` skill defined in [`.claude/skills/localize/SKILL.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/localize/SKILL.md). Each phase generates specific artifacts that feed into the next stage, culminating in a release gate that blocks builds with unresolved localization issues.

### String Extraction and CSV Generation

The pipeline begins with the `/localize scan` command, which recursively examines source files under `src/` (specifically `src/ui/**` per UI code rules) to identify hard-coded strings. The scanner detects anti-patterns such as missing `tr()` wrappers and generates a master string table.

The extraction process creates `assets/localization/en.csv` as the source-of-truth locale. This file contains stable keys mapped to English source strings, with empty columns reserved for target languages. All downstream locales must mirror these keys exactly.

### Translation Management

Human translators work directly with CSV files stored in `assets/localization/{locale}/`. The `/localize import <locale>` command initializes new locale files by copying the source keys while leaving translation values empty.

Key requirements for translation assets:
- **Key stability**: Never modify keys in `en.csv` once created, as this breaks existing translations
- **Character limits**: German and Finnish translations can expand by 30% or more; the QA phase validates UI constraints
- **RTL support**: Right-to-left locales require additional platform certification checks

### String Freeze Enforcement

The **string freeze workflow** prevents unauthorized string modifications during the final stages of a release cycle. When activated, the system creates [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md) containing a freeze status flag and violation counter.

Freeze mechanics:
1. **Activation**: Create or update [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md) with the marker "⚠️ String freeze is active"
2. **Violation detection**: The `/localize status` command compares current string keys against the frozen baseline
3. **Blocking**: New or modified strings trigger violations that must be resolved before the release gate opens

### QA and Release Gates

The `/localize qa` command executes comprehensive quality checks that generate per-locale reports (`production/localization/loc-qa-<locale>-<date>.md`). These reports validate coverage, length constraints, and platform-specific requirements.

Finally, the `release-manager` skill (defined in [`.claude/skills/team-release/SKILL.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/team-release/SKILL.md)) verifies that:
- The localization lead has signed off on QA reports
- [`freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/freeze-status.md) reports zero violations
- All supported locales have complete translation coverage

Only when these conditions are met does the release gate allow the build to proceed.

## Implementing String Freeze Workflows

String freezes require coordination between the localization pipeline and release management. The workflow ensures that once a build enters the stabilization phase, no text changes can introduce regression risks in translated versions.

### Activating and Checking Freeze Status

To initiate a string freeze, create the status file manually or via automation:

```bash

# Manually create freeze status

echo "⚠️ String freeze is active. Build: v1.2.0-rc1" > production/localization/freeze-status.md

```

Check current status with the dedicated command:

```bash
/localize status

```

Expected output during active freeze:

```

⚠️ String freeze is active. 3 new/modified strings have been added.
These are freeze violations. Notify your localization vendor before proceeding.

```

### Handling Freeze Violations

When violations occur, the pipeline provides three resolution paths:

1. **Revert changes**: Remove the offending strings from source code to restore the frozen baseline
2. **Emergency override**: Update [`freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/freeze-status.md) with explicit approval from the localization lead and release manager
3. **Thaw and refreeze**: If the changes are critical, formally end the freeze, merge the strings, and initiate a new freeze cycle after re-translation

The QA reports generated by `/localize qa` include a dedicated section listing all freeze violations with file paths and line numbers for rapid remediation.

## Practical Commands and Usage

The `/localize` skill exposes several sub-commands that implement the complete workflow. These commands can be executed individually for debugging or chained together for CI/CD integration.

### Full Pipeline Execution

Run the complete localization workflow in a single command:

```bash
/localize all

```

This executes:
1. Source code scan and CSV extraction
2. Freeze status validation
3. QA checks across all locales
4. Generation of translator briefs

### String Extraction Only

For development workflows focused on content creation:

```bash
/localize scan

```

This updates `assets/localization/en.csv` with new strings while preserving existing keys. The command exits with code `1` if hard-coded strings are detected outside `tr()` wrappers, enforcing the UI code rules defined in [`.claude/rules/ui-code.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/rules/ui-code.md).

### QA and Reporting

Generate comprehensive quality reports:

```bash
/localize qa

```

This creates timestamped Markdown files in `production/localization/` containing:
- Missing translations per locale
- Character count violations against UI constraints
- RTL layout warnings
- Freeze violation summaries

### Translator Brief Generation

Create context documents for translation vendors:

```bash
/localize brief fr

```

This generates `production/localization/translator-brief-fr-<date>.md` including:
- Key-value tables for translation
- Character limits derived from UI constraints
- Contextual notes extracted from source code comments

## Key Configuration Files

The localization workflow relies on specific files that define its behavior and store its state. Understanding these files is essential for maintaining the pipeline.

| File | Purpose | Location |
|------|---------|----------|
| **SKILL.md** | Defines the `/localize` command logic, scan patterns, and QA rules | [`.claude/skills/localize/SKILL.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/localize/SKILL.md) |
| **en.csv** | Master string table containing source keys and English text | `assets/localization/en.csv` |
| **freeze-status.md** | Active freeze state and violation counter | [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md) |
| **team-release/SKILL.md** | Release gate logic that validates localization completion | [`.claude/skills/team-release/SKILL.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/team-release/SKILL.md) |
| **ui-code.md** | Coding standard requiring `tr()` wrappers for all UI strings | [`.claude/rules/ui-code.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/rules/ui-code.md) |

These files should be version controlled, with the exception that [`freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/freeze-status.md) may be temporarily modified during release cycles to reflect the current freeze state.

## Summary

- **Extraction**: The `/localize scan` command identifies hard-coded strings in `src/` and generates `assets/localization/en.csv` as the master key table.
- **Freeze Enforcement**: Creating [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md) activates a string freeze that blocks new string additions during release stabilization.
- **Quality Assurance**: `/localize qa` validates translation coverage, character limits, and RTL compliance, generating timestamped reports.
- **Release Integration**: The `release-manager` skill enforces that all localization steps complete and freeze violations resolve before allowing builds to proceed.
- **Code Standards**: The [`.claude/rules/ui-code.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/rules/ui-code.md) file mandates `tr()` wrappers for all UI strings, ensuring the extraction pipeline functions correctly.

## Frequently Asked Questions

### How do I add support for a new language to the localization pipeline?

Create a new CSV file in `assets/localization/` named with the locale code (e.g., `de.csv` for German), then run `/localize import de` to populate it with the source keys from `en.csv`. Translators can then fill in the translation values while preserving the key structure exactly.

### What happens if I modify strings during an active string freeze?

The `/localize status` command will detect the changes and report violations in [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md). The release gate will block the build until you either revert the changes, obtain explicit approval from the localization lead to override the freeze, or formally end the freeze period to accept the new strings.

### Where are the QA reports stored and what do they contain?

Running `/localize qa` generates Markdown files in `production/localization/` with names following the pattern `loc-qa-<locale>-<date>.md`. These reports contain translation coverage statistics, character count validations against UI constraints, RTL layout warnings, and summaries of any freeze violations detected during the QA period.

### How does the release manager verify localization readiness?

The `release-manager` skill, defined in [`.claude/skills/team-release/SKILL.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/.claude/skills/team-release/SKILL.md), checks three criteria before allowing a release: the localization lead must have produced and signed off on QA reports, [`production/localization/freeze-status.md`](https://github.com/Donchitos/Claude-Code-Game-Studios/blob/main/production/localization/freeze-status.md) must show zero active violations, and all supported locales must have complete translation coverage without missing keys.