agency-internationalization-engineer

Implements ICU MessageFormat, CLDR plural rules, RTL layouts, and pseudo-localization testing for multilingual software.

Updated Jul 14, 2026
One-click install
npx skills add https://github.com/AI-Staffing-Solution-Consultants-LLC/core-engineering-system --skill agency-internationalization-engineer-ai-staffing-solution-consultants-llc
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: agency-internationalization-engineer
Source: https://github.com/AI-Staffing-Solution-Consultants-LLC/core-engineering-system/tree/main/.agents/skills/engineering-i18n-engineer
Command: npx skills add https://github.com/AI-Staffing-Solution-Consultants-LLC/core-engineering-system --skill agency-internationalization-engineer-ai-staffing-solution-consultants-llc

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Software that assumes English breaks in other languages: concatenated strings become untranslatable, hardcoded date formats confuse users, and LTR-only layouts collapse under right-to-left scripts. This Skill makes codebases genuinely translation-ready by externalizing strings, enforcing ICU MessageFormat, and wiring locale-correct formatting through CLDR-backed APIs. ## Core Features & Use Cases - ICU MessageFormat Architecture: Converts concatenated fragments into complete messages with named placeholders, CLDR plural categories (zero/one/two/few/many/other), and translator descriptions. - Locale-Aware Formatting: Replaces hand-rolled date, number, currency, list, and relative-time formatters with Intl/CLDR APIs. - RTL-Safe Layouts: Migrates CSS to logical properties (margin-inline-start, text-align: start) so one stylesheet serves both LTR and RTL without forks. - Pseudo-Localization in CI: Adds pseudo-locale transforms that expose hardcoded strings, encoding bugs, and truncation before translators do. - Use Case: Before launching in Arabic and German, run an audit that finds 412 hardcoded strings and 9 custom date formatters, externalize them into ICU messages, flip the layout to logical properties, and gate merges on a pseudo-locale CI check. ## Quick Start Audit this codebase for hardcoded strings, concatenated messages, and LTR-assuming CSS, then produce a ranked plan to make it translation-ready for Arabic and German.

Frequently Asked Questions about agency-internationalization-engineer

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

FAQPage Schema
How do I handle pluralization in multiple languages with ICU MessageFormat?▼

Use ICU plural syntax like {count, plural, one {# item} other {# items}} instead of ternary conditionals. CLDR defines plural categories per language — Arabic has six forms, Japanese has one — and the ICU message resolves the correct category automatically at runtime.

How do I make CSS layouts support RTL languages like Arabic?▼

Replace physical properties with logical ones: margin-inline-start instead of margin-left, text-align: start instead of left. Set dir on the html element from the resolved locale, and flip only directional icons with transform: scaleX(-1) under [dir='rtl'].

What is pseudo-localization and how does it catch i18n bugs?▼

Pseudo-localization transforms source strings by swapping in accented characters, adding ~40% padding, and wrapping in brackets. It exposes encoding bugs, truncation in fixed-width layouts, and hardcoded strings — any untransformed text on screen failed externalization.

Does Intl support currency and date formatting for all locales?▼

Yes, Intl.NumberFormat and Intl.DateTimeFormat are CLDR-backed and cover currency, percent, relative time, and list formatting across locales. For example, 1234.5 EUR renders as '1.234,50 €' in de-DE and '€1,234.50' in en-US without custom code.

Why is string concatenation a problem for translation?▼

Concatenation like 'You have ' + count + ' items' assumes English word order, which differs across languages, making the sentence untranslatable. Every user-facing message must be a complete ICU string with named placeholders so translators control the full sentence.

How should locale detection work in a web application?▼

Combine explicit user preference with the Accept-Language header, never IP geolocation alone. Define a deliberate fallback chain such as pt-BR → pt → en so partial translations degrade gracefully to a supported locale.