Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    aj-geddes

    internationalization-i18n

    aj-geddes/internationalization-i18n
    Coding
    59

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Implement internationalization (i18n) and localization including message extraction, translation catalogs, pluralization rules, date/time/number formatting, RTL language support, and i18n libraries...

    SKILL.md

    Internationalization (i18n) & Localization

    Table of Contents

    • Overview
    • When to Use
    • Quick Start
    • Reference Guides
    • Best Practices

    Overview

    Comprehensive guide to implementing internationalization and localization in applications. Covers message translation, pluralization, date/time/number formatting, RTL languages, and integration with popular i18n libraries.

    When to Use

    • Building multi-language applications
    • Supporting international users
    • Implementing language switching
    • Formatting dates, times, and numbers for different locales
    • Supporting RTL (right-to-left) languages
    • Extracting and managing translation strings
    • Implementing pluralization rules
    • Setting up translation workflows

    Quick Start

    Minimal working example:

    // i18n.ts
    import i18next from "i18next";
    import Backend from "i18next-http-backend";
    import LanguageDetector from "i18next-browser-languagedetector";
    
    await i18next
      .use(Backend)
      .use(LanguageDetector)
      .init({
        fallbackLng: "en",
        debug: process.env.NODE_ENV === "development",
    
        interpolation: {
          escapeValue: false, // React already escapes
        },
    
        backend: {
          loadPath: "/locales/{{lng}}/{{ns}}.json",
        },
    
        detection: {
          order: ["querystring", "cookie", "localStorage", "navigator"],
          caches: ["localStorage", "cookie"],
        },
      });
    // ... (see reference guides for full implementation)
    

    Reference Guides

    Detailed implementations in the references/ directory:

    Guide Contents
    i18next (JavaScript/TypeScript) i18next (JavaScript/TypeScript)
    React-Intl (Format.js) React-Intl (Format.js)
    Python i18n (gettext) Python i18n (gettext)
    Date and Time Formatting Date and Time Formatting
    Number and Currency Formatting Number and Currency Formatting
    Pluralization Rules Pluralization Rules
    RTL (Right-to-Left) Language Support RTL (Right-to-Left) Language Support
    Translation Management Translation Management
    Locale Detection Locale Detection
    Server-Side i18n Server-Side i18n

    Best Practices

    ✅ DO

    • Extract all user-facing strings to translation files
    • Use ICU message format for complex messages
    • Support pluralization correctly for each language
    • Use locale-aware date/time/number formatting
    • Implement RTL support for Arabic, Hebrew, etc.
    • Provide fallback language (usually English)
    • Use namespaces to organize translations
    • Test with pseudo-localization (ääçćëńţś)
    • Store locale preference (cookie, localStorage)
    • Use professional translators for production
    • Implement translation management workflow
    • Support dynamic locale switching
    • Use translation memory tools

    ❌ DON'T

    • Hardcode user-facing strings in code
    • Concatenate translated strings
    • Assume English grammar rules apply to all languages
    • Use generic plural forms (one/many) for all languages
    • Forget about text expansion (German is ~30% longer)
    • Store dates/times in locale-specific formats
    • Use flags to represent languages (flag ≠ language)
    • Translate technical terms without context
    • Mix translation keys with UI strings
    • Forget to translate alt text, titles, placeholders
    • Assume left-to-right layout
    Repository
    aj-geddes/useful-ai-prompts
    Files