Back to Skills

localization-testing

proffesor-for-testing
Updated Today
73 views
99
21
99
View on GitHub
Otherlocalizationi18nl10ntranslationrtlunicodelocale

About

This skill automates internationalization and localization testing for global products, including translation coverage, locale-specific formats, and RTL language support. It's designed for developers launching in new markets or building multi-language applications to validate cultural appropriateness and character encoding. Use it to systematically verify i18n/l10n requirements across text, visuals, and regional formats.

Documentation

Localization & Internationalization Testing

<default_to_action> When testing multi-language/region support:

  1. VERIFY translation coverage (all strings translated)
  2. TEST locale-specific formats (date, time, currency, numbers)
  3. VALIDATE RTL layout (Arabic, Hebrew)
  4. CHECK character encoding (UTF-8, unicode)
  5. CONFIRM cultural appropriateness (icons, colors, content)

Quick i18n Checklist:

  • All user-facing strings externalized
  • No hardcoded text in code
  • Date/time/currency formatted per locale
  • RTL languages flip layout correctly
  • Unicode characters display properly

Critical Success Factors:

  • Don't hardcode strings - externalize everything
  • Test with real speakers, not just translation files
  • RTL requires mirrored UI layout </default_to_action>

Quick Reference Card

When to Use

  • Launching in new markets
  • Adding language support
  • Before international releases
  • After UI changes

i18n vs l10n

TermFull NameFocus
i18nInternationalizationBuilding for localization
l10nLocalizationAdapting for specific locale

Common Locale Formats

TypeUS (en-US)UK (en-GB)Japan (ja-JP)
Date10/24/202524/10/20252025/10/24
Currency$1,234.56£1,234.56¥1,235
Number1,234.561,234.561,234.56

Translation Coverage Testing

test('all strings are translated', () => {
  const enKeys = Object.keys(translations.en);
  const frKeys = Object.keys(translations.fr);
  const esKeys = Object.keys(translations.es);

  // All locales have same keys
  expect(frKeys).toEqual(enKeys);
  expect(esKeys).toEqual(enKeys);
});

test('no missing translation placeholders', async ({ page }) => {
  await page.goto('/?lang=fr');
  const text = await page.textContent('body');

  // Should not see placeholder keys
  expect(text).not.toContain('translation.missing');
  expect(text).not.toMatch(/\{\{.*\}\}/); // {{key}} format
});

Date/Time/Currency Formats

test('date formats by locale', () => {
  const date = new Date('2025-10-24');

  expect(formatDate(date, 'en-US')).toBe('10/24/2025');
  expect(formatDate(date, 'en-GB')).toBe('24/10/2025');
  expect(formatDate(date, 'ja-JP')).toBe('2025/10/24');
});

test('currency formats by locale', () => {
  const amount = 1234.56;

  expect(formatCurrency(amount, 'en-US', 'USD')).toBe('$1,234.56');
  expect(formatCurrency(amount, 'de-DE', 'EUR')).toBe('1.234,56 €');
  expect(formatCurrency(amount, 'ja-JP', 'JPY')).toBe('¥1,235');
});

RTL (Right-to-Left) Testing

test('layout flips for RTL languages', async ({ page }) => {
  await page.goto('/?lang=ar'); // Arabic

  const dir = await page.locator('html').getAttribute('dir');
  expect(dir).toBe('rtl');

  // Navigation should be on right
  const nav = await page.locator('nav');
  const styles = await nav.evaluate(el =>
    window.getComputedStyle(el)
  );
  expect(styles.direction).toBe('rtl');
});

test('icons/images appropriate for RTL', async ({ page }) => {
  await page.goto('/?lang=he'); // Hebrew

  // Back arrow should point right in RTL
  const backIcon = await page.locator('.back-icon');
  expect(await backIcon.getAttribute('class')).toContain('rtl-flipped');
});

Unicode Character Support

test('supports unicode characters', async ({ page }) => {
  // Japanese
  await page.fill('#name', '山田太郎');
  await page.click('#submit');

  const saved = await db.users.findOne({ /* ... */ });
  expect(saved.name).toBe('山田太郎');

  // Arabic
  await page.fill('#name', 'محمد');
  // Emoji
  await page.fill('#bio', '👋🌍');

  expect(saved.bio).toBe('👋🌍');
});

Agent-Driven Localization Testing

// Comprehensive localization validation
await Task("Localization Testing", {
  url: 'https://example.com',
  locales: ['en-US', 'fr-FR', 'de-DE', 'ja-JP', 'ar-SA'],
  checks: ['translations', 'formats', 'rtl', 'unicode'],
  detectHardcodedStrings: true
}, "qe-test-generator");

// Returns:
// {
//   locales: 5,
//   missingTranslations: 3,
//   formatIssues: 1,
//   rtlIssues: 0,
//   hardcodedStrings: ['button.submit', 'header.title']
// }

Agent Coordination Hints

Memory Namespace

aqe/localization-testing/
├── translations/*       - Translation coverage
├── formats/*            - Locale-specific formats
├── rtl-validation/*     - RTL layout checks
└── unicode/*            - Character encoding tests

Fleet Coordination

const l10nFleet = await FleetManager.coordinate({
  strategy: 'localization-testing',
  agents: [
    'qe-test-generator',   // Generate l10n tests
    'qe-test-executor',    // Execute across locales
    'qe-visual-tester'     // RTL visual validation
  ],
  topology: 'parallel'
});

Related Skills


Remember

Don't hardcode. Externalize all user-facing strings. Every string visible to users must come from translation files, not code.

Test with native speakers, not just translation files. Machine translations and translation files can have context issues that only native speakers catch.

With Agents: Agents validate translation coverage, detect hardcoded strings, test locale-specific formatting, and verify RTL layouts automatically across all supported languages.

Quick Install

/plugin add https://github.com/proffesor-for-testing/agentic-qe/tree/main/localization-testing

Copy and paste this command in Claude Code to install this skill

GitHub 仓库

proffesor-for-testing/agentic-qe
Path: .claude/skills/localization-testing
agenticqeagenticsfoundationagentsquality-engineering

Related Skills

i18n-automation

Meta

This Claude Skill automates internationalization workflows for web applications by handling translation, key generation, and library setup. It analyzes your project to configure i18n libraries, design key structures, and manage locale files. Use it to quickly add multi-language support and streamline the localization process.

View skill

test-environment-management

Other

This Claude Skill manages test infrastructure using infrastructure as code, Docker/Kubernetes for consistent environments, and service virtualization. It helps developers ensure environment parity with production and optimize testing costs through auto-shutdown and spot instances. Use it when provisioning test environments or managing testing infrastructure.

View skill

test-design-techniques

Other

This Claude Skill provides systematic test design techniques including boundary value analysis, equivalence partitioning, and decision tables. It helps developers create comprehensive test cases while reducing redundancy through methods like pairwise testing. Use it when designing tests for complex business rules, stateful behavior, or ensuring systematic coverage.

View skill

regression-testing

Other

This skill strategically selects and runs regression tests based on code changes and risk, ensuring fixes don't break existing functionality. It analyzes impact, optimizes test execution for faster feedback, and helps manage continuous regression within CI/CD. Use it for verifying changes, planning test suites, or streamlining test execution.

View skill