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

Use the /localize skill to extract hard-coded strings into CSV files, enforce a string freeze via 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. 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 containing a freeze status flag and violation counter.

Freeze mechanics:

  1. Activation: Create or update 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) verifies that:

  • The localization lead has signed off on QA reports
  • 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:


# 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:

/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 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:

/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:

/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.

QA and Reporting

Generate comprehensive quality reports:

/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:

/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
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
team-release/SKILL.md Release gate logic that validates localization completion .claude/skills/team-release/SKILL.md
ui-code.md Coding standard requiring tr() wrappers for all UI strings .claude/rules/ui-code.md

These files should be version controlled, with the exception that 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 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 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. 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, checks three criteria before allowing a release: the localization lead must have produced and signed off on QA reports, production/localization/freeze-status.md must show zero active violations, and all supported locales must have complete translation coverage without missing keys.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →