i18n-text

Enforce i18n translation keys in Blaze templates and JavaScript.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/zcawood-mie/agentz --skill i18n-text
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: i18n-text
Source: https://github.com/zcawood-mie/agentz/tree/main/skills/i18n-text
Command: npx skills add https://github.com/zcawood-mie/agentz --skill i18n-text

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Prevents hardcoded user-facing strings by enforcing use of i18n translation keys and a consistent translation workflow, reducing localization regressions and inconsistent messaging across the UI. It guides developers to avoid embedding literal text in templates and JavaScript and ensures parity across multiple language files.

Core Features & Use Cases

  • Enforcement Guidance: Rules that require all labels, buttons, placeholders, headings, alerts, toasts, error messages, tooltips, and modal content to use translation keys instead of hardcoded text.
  • Naming & Interpolation Conventions: Snake_case keys, descriptive names, and interpolation using {$variable} to ensure consistent, safe substitutions.
  • Multi-language Workflow: Instructions and helper scripts to verify presence across nine language JSON files and to add keys atomically while preserving alphabetical sort.
  • Developer Tools: Scripts to search for existing keys and to add new keys across all language files, with validation, dry-run, and force options.

Quick Start

Ask the agent to add a new i18n key save_changes with English value Save Changes and update all nine language files so keys remain alphabetized and valid.

Frequently Asked Questions about i18n-text

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent hardcoded UI strings and enforce i18n in my application code?

To enforce i18n and prevent hardcoded UI strings, all user-facing text such as labels, buttons, and alerts must use translation keys instead of literal text in Blaze templates and JavaScript. This ensures consistent messaging and reduces localization regressions across the UI.

How do I add a new i18n translation key across multiple language JSON files atomically?

You can atomically add a new i18n translation key across all nine language JSON files using provided helper scripts. These scripts validate snake_case naming, insert the key while preserving alphabetical sort order, and support dry-run and force options for safe multi-language updates.

What naming and interpolation conventions should I use for i18n translation keys?

Translation keys must use descriptive snake_case naming conventions. For dynamic content, interpolation must use the {$variable} syntax to ensure safe substitutions and consistent variable formatting across all localized user-facing strings in the application.

Does this i18n enforcement workflow support Blaze templates and the universe:i18n package?

Yes, this i18n enforcement workflow specifically supports Blaze templates and JavaScript in projects using the universe:i18n bluehive-i18n package. It validates translation keys and maintains alphabetically sorted JSON files across nine languages within this specific stack.

Why do my localization JSON files have inconsistent translation keys after adding new entries?

Inconsistent localization JSON files occur when new translation keys are not added atomically across all nine language files. Using a validation script that enforces alphabetical sorting and snake_case naming ensures parity and prevents missing keys across different languages.

What is the best way to manage multi-language translation workflows without causing localization regressions?

The best way to manage multi-language translation workflows is to enforce a consistent process using translation keys for all user-facing strings and helper scripts. This approach validates key naming, ensures alphabetical sorting across nine language files, and maintains UI parity.