i18n-localization — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited i18n-localization (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Two related jobs sit behind multi-language support:
A locale pairs a language with a region (en-US, tr-TR, ar-EG). RTL refers to scripts that flow right to left, such as Arabic and Hebrew.
Reach for i18n early when the audience is plausibly multilingual; treat it as optional for throwaway or single-market work.
Retrofitting i18n is painful, so when in doubt, structure for it from the start.
import { useTranslation } from 'react-i18next';
export function Greeting() {
const { t } = useTranslation();
return <h1>{t('greeting.heading')}</h1>;
}import { useTranslations } from 'next-intl';
export default function LandingPage() {
const t = useTranslations('Landing');
return <h1>{t('heading')}</h1>;
}from gettext import gettext as _
print(_("Welcome aboard"))Split catalogs by language, then by feature so files stay small and merge-friendly:
locales/
├── en/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
├── tr/
│ ├── common.json
│ ├── auth.json
│ └── errors.json
└── ar/ # right-to-left
└── ...Do
if checks.Intl APIs.Avoid
| Snag | Fix |
|---|---|
| Key absent in a language | Fall back to the default locale |
| Literal text in code | Run the checker script to surface it |
| Wrong date format | Intl.DateTimeFormat |
| Wrong number/currency format | Intl.NumberFormat |
| Broken plurals | ICU plural rules |
Lean on logical CSS properties so a single rule serves both directions, and flip directional icons explicitly:
/* Resolves correctly in both LTR and RTL */
.panel {
margin-inline-start: 1rem; /* instead of margin-left */
padding-inline-end: 1rem; /* instead of padding-right */
}
[dir="rtl"] .chevron {
transform: scaleX(-1);
}Intl| Script | What it does | How to run |
|---|---|---|
scripts/i18n_checker.py | Flags hardcoded strings and out-of-sync catalogs | python scripts/i18n_checker.py <project_path> |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.