PluginBench
Skill
Pass
Audit score 90

i18n-localization

sickn33/agentic-awesome-skills

Detect hardcoded strings, manage translations, and implement RTL support across locales.

What is i18n-localization?

This skill provides internationalization (i18n) and localization (L10n) patterns for making applications translatable and locale-aware. Use it when building public web apps, SaaS products, or any application targeting multiple languages and regions.

  • Detect hardcoded strings in code using automated checker scripts
  • Manage translation files organized by locale and feature namespace
  • Support right-to-left (RTL) languages with CSS logical properties
  • Handle pluralization and complex messages using ICU message format
  • Format dates and numbers according to locale using Intl API
  • Provide fallback language configuration for missing translations

How to install i18n-localization

npx skills add https://github.com/sickn33/agentic-awesome-skills --skill i18n-localization
Claude Code
Cursor
Windsurf
Cline

How to use i18n-localization

  1. 1.Choose an i18n library appropriate for your framework (react-i18next for React, next-intl for Next.js, gettext for Python)
  2. 2.Create a locales directory structure organized by language code and feature namespace
  3. 3.Replace hardcoded strings in components with translation key references using the library's hook or function
  4. 4.Run the i18n_checker.py script to detect any remaining hardcoded strings: python scripts/i18n_checker.py <project_path>
  5. 5.Add locale files (JSON or PO format) for each supported language with translated content
  6. 6.Configure fallback language and locale detection in your application setup
  7. 7.Test RTL layout using CSS logical properties (margin-inline-start, padding-inline-end) instead of directional properties
  8. 8.Validate date and number formatting using Intl.DateTimeFormat and Intl.NumberFormat APIs

Use cases

Good for
  • Converting a single-language React app to support multiple locales using react-i18next
  • Setting up translation file structure and namespace organization for a new SaaS product
  • Implementing RTL layout support for Arabic and Hebrew language versions
  • Detecting and replacing hardcoded strings in an existing codebase before internationalization
  • Configuring Next.js with next-intl for multi-language page routing
Who it's for
  • Frontend developers building multi-language applications
  • Full-stack engineers working on SaaS or public web products
  • Teams expanding existing apps to new regions or languages
  • Developers implementing accessibility and localization standards

i18n-localization FAQ

What's the difference between i18n and L10n?

i18n (internationalization) is the process of making your app translatable by using translation keys instead of hardcoded strings. L10n (localization) is the actual translation of content into specific languages and regions.

When should I implement i18n in my project?

Implement i18n early for public web apps and SaaS products. For internal tools, consider it if future expansion is likely. For personal projects, it's optional.

How do I handle text that's longer in some languages?

Use flexible layouts and avoid hardcoding text dimensions. German text is typically 30% longer than English, so plan for expansion in your UI design.

What's the best way to detect hardcoded strings in existing code?

Use the included i18n_checker.py script with your project path to automatically scan for hardcoded strings and missing translations.

How do I support right-to-left languages like Arabic?

Use CSS logical properties (margin-inline-start, padding-inline-end) instead of directional properties, and apply transform: scaleX(-1) to icons when dir='rtl' is set.

Full instructions (SKILL.md)

Source of truth, from sickn33/agentic-awesome-skills.


name: i18n-localization description: "Internationalization and localization patterns. Detecting hardcoded strings, managing translations, locale files, RTL support." risk: safe source: community date_added: "2026-02-27"

i18n & Localization

Internationalization (i18n) and Localization (L10n) best practices.


1. Core Concepts

TermMeaning
i18nInternationalization - making app translatable
L10nLocalization - actual translations
LocaleLanguage + Region (en-US, tr-TR)
RTLRight-to-left languages (Arabic, Hebrew)

2. When to Use i18n

Project Typei18n Needed?
Public web app✅ Yes
SaaS product✅ Yes
Internal tool⚠️ Maybe
Single-region app⚠️ Consider future
Personal project❌ Optional

3. Implementation Patterns

React (react-i18next)

import { useTranslation } from 'react-i18next';

function Welcome() {
  const { t } = useTranslation();
  return <h1>{t('welcome.title')}</h1>;
}

Next.js (next-intl)

import { useTranslations } from 'next-intl';

export default function Page() {
  const t = useTranslations('Home');
  return <h1>{t('title')}</h1>;
}

Python (gettext)

from gettext import gettext as _

print(_("Welcome to our app"))

4. File Structure

locales/
├── en/
│   ├── common.json
│   ├── auth.json
│   └── errors.json
├── tr/
│   ├── common.json
│   ├── auth.json
│   └── errors.json
└── ar/          # RTL
    └── ...

5. Best Practices

DO ✅

  • Use translation keys, not raw text
  • Namespace translations by feature
  • Support pluralization
  • Handle date/number formats per locale
  • Plan for RTL from the start
  • Use ICU message format for complex strings

DON'T ❌

  • Hardcode strings in components
  • Concatenate translated strings
  • Assume text length (German is 30% longer)
  • Forget about RTL layout
  • Mix languages in same file

6. Common Issues

IssueSolution
Missing translationFallback to default language
Hardcoded stringsUse linter/checker script
Date formatUse Intl.DateTimeFormat
Number formatUse Intl.NumberFormat
PluralizationUse ICU message format

7. RTL Support

/* CSS Logical Properties */
.container {
  margin-inline-start: 1rem;  /* Not margin-left */
  padding-inline-end: 1rem;   /* Not padding-right */
}

[dir="rtl"] .icon {
  transform: scaleX(-1);
}

8. Checklist

Before shipping:

  • All user-facing strings use translation keys
  • Locale files exist for all supported languages
  • Date/number formatting uses Intl API
  • RTL layout tested (if applicable)
  • Fallback language configured
  • No hardcoded strings in components

Script

ScriptPurposeCommand
scripts/i18n_checker.pyDetect hardcoded strings & missing translationspython scripts/i18n_checker.py <project_path>

When to Use

This skill is applicable to execute the workflow or actions described in the overview.

Limitations

  • Use this skill only when the task clearly matches the scope described above.
  • Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
  • Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.