Get the FREE Ultimate OpenClaw Setup Guide →

i18n-localization

Scanned
npx machina-cli add skill vudovn/antigravity-kit/i18n-localization --openclaw
Files (1)
SKILL.md
3.0 KB

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>

Source

git clone https://github.com/vudovn/antigravity-kit/blob/main/.agent/skills/i18n-localization/SKILL.mdView on GitHub

Overview

Internationalization (i18n) and localization (L10n) best practices, including detecting hardcoded strings, managing translations, and organizing locale files. It also covers RTL support and per-locale formatting to ensure accurate, localized user experiences.

How This Skill Works

Use tooling (Read, Glob, Grep) to identify hardcoded strings and enforce translation keys. Build a locales directory with language-specific files and feature-scoped namespaces, then integrate libraries like react-i18next or next-intl to fetch translations. Apply ICU message formats for complex strings and CSS logical properties to support RTL.

When to Use It

  • Public web app
  • SaaS product
  • Internal tool
  • Single-region app
  • Personal project

Quick Start

  1. Step 1: Identify translatable strings and replace them with translation keys; create initial locale files under locales/
  2. Step 2: Add locale files for supported languages and organize by feature namespaces
  3. Step 3: Integrate a translation library (e.g., react-i18next or next-intl) and test with RTL layouts

Best Practices

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

Example Use Cases

  • Multi-language dashboard in a SaaS app
  • E-commerce checkout localized by locale and currency
  • RTL-ready UI for Arabic/Hebrew users
  • Admin panel using feature-scoped translation namespaces
  • Public site with locale directories and ICU message formats

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers