{"enrichment":{"faq":[{"a":"Software Localisation recommends react-i18next or react-intl as the primary choices for React i18n. react-i18next integrates with i18next (a mature, framework-agnostic library) and offers hooks-based APIs; react-intl provides strong ICU message format support and component-driven translation. Both handle namespacing, lazy loading, and language switching. Start by installing your chosen library, defining translation JSON files organized by locale and namespace, initializing the i18n instance with your language configuration, and wrapping your app with the provider component. Use hooks like `useTranslation()` in functional components to access translations and language-switching functions.","q":"How do I set up i18n in React?"},{"a":"Software Localisation notes that react-i18next vs react-intl differ in philosophy and feature set. react-i18next wraps the standalone i18next library, offering flexibility, plugin ecosystems, and backend integration for dynamic translation loading; it's lighter and favors simplicity. react-intl is Facebook's solution with deeper ICU message format support, plural rules, and date/number formatting built-in; it's heavier but more opinionated. Choose react-i18next for lightweight projects or multi-framework codebases; choose react-intl if you need robust pluralization, gender agreement, or complex number/date formatting across locales.","q":"What's the difference between react-i18next and react-intl?"},{"a":"Software Localisation recommends a multi-layer approach: first, enable fallback language chains (e.g., en-GB \u2192 en \u2192 default) so missing keys gracefully degrade. Second, use namespacing to organize keys logically and catch gaps during review. Third, implement key validation in your build pipeline\u2014scan all component files for translation calls and verify every key exists in all locale files; flag mismatches before deployment. Fourth, log missing keys at runtime with your i18n library's error handler, then monitor those logs. Finally, automate translation sync: use tools like i18next-scanner to detect new keys, and integrate with translation management systems (TMS) to prevent stale or incomplete locale files reaching production.","q":"How do I fix translation key missing in production?"},{"a":"Software Localisation recommends next-intl for Next.js internationalization. It integrates seamlessly with App Router, supports static generation per locale, and handles URL-based routing (e.g., /en/about, /fr/about). Install next-intl, configure middleware to detect and route users to their preferred locale, organize translation files by language, and wrap pages with the i18n provider. next-intl also supports ICU message format and provides type-safe translation keys via TypeScript. For static export, pre-generate all locale variants; for dynamic content, use ISR or on-demand revalidation. Alternatively, use react-i18next with custom routing if you prefer framework-agnostic tooling.","q":"What localization setup works best for Next.js?"},{"a":"Software Localisation advises that RTL (right-to-left) support requires both i18n library configuration and CSS/layout changes. In your i18n setup, detect the locale and set the `dir` attribute on the `<html>` element to 'rtl' or 'ltr'. Use CSS logical properties (margin-inline, padding-block, text-align: start/end) instead of directional ones (margin-left, padding-right) so they flip automatically. Test with pseudo-localization tools to catch hardcoded directional assumptions. Ensure form inputs, modals, and navigation reverse visually. Many i18n libraries (react-intl, vue-i18n) expose locale metadata; use it to toggle RTL classes or CSS variables. Validate with native speakers and screen readers to confirm reading order and accessibility remain correct.","q":"How do I implement RTL support for Arabic and Hebrew websites?"},{"a":"Software Localisation recommends a priority-based detection chain: first check URL/route parameters (most explicit), then user account preferences (if authenticated), then browser language headers (Accept-Language), then geolocation (if privacy-acceptable), and finally fall back to a default locale. Store the user's choice in localStorage or a cookie so it persists across sessions. For server-side rendering (Next.js, Nuxt), detect locale in middleware before rendering to avoid hydration mismatches. Use libraries like accept-language-parser to parse browser headers reliably. Avoid geolocation alone\u2014it's unreliable and raises privacy concerns. Always let users manually override detection via a language picker, and document your strategy so translators and QA understand the fallback order.","q":"What's the best locale detection strategy for multilingual apps?"}],"shadow_tags":["message-formatting","locale-routing","translation-workflow","bidirectional-text","key-management","bundle-optimization","quality-assurance","framework-agnostic","content-localization"],"summary_rewrite":"Software Localisation guides you through implementing internationalisation and localisation across modern web frameworks. It covers library selection (react-i18next, react-intl, vue-i18n, @angular/localize, next-intl), ICU message formatting, character encoding standards, and CI/CD workflows to prevent mixed-language regressions."},"files":[{"bytes":20225,"path":"frameworks/shared-skills/skills/software-localisation/SKILL.md","sha256":"18c4d65d0a295644b68d08540051054a72195a257720ab41445b238f1bfb5ae9","url":"https://skillfed.io/files/vasilyu1983/AI-Agents-public/software-localisation/cb7bddd6/SKILL.md"}],"id":"vasilyu1983/AI-Agents-public/software-localisation","links":{"html":"https://skillfed.io/vasilyu1983/AI-Agents-public/software-localisation","md":"https://skillfed.io/vasilyu1983/AI-Agents-public/software-localisation.md","repo":"https://github.com/vasilyu1983/AI-Agents-public"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":17,"language":"Python","last_updated":"2026-07-13","license":"MIT","name":"software-localisation","publisher":"vasilyu1983","stars":69},"relations":{"similar":[{"id":"laolaoshiren/claude-code-skills-zh/i18n-helper"},{"id":"miles990/claude-software-skills/internationalization"},{"id":"skills-il/localization/hebrew-i18n"},{"id":"travisjneuman/.claude/i18n-localization"},{"id":"aj-geddes/useful-ai-prompts/internationalization-i18n"},{"id":"lingui/skills/migrate-i18next-to-lingui"},{"id":"Mindrally/skills/localization-l10n"},{"id":"EliasOulkadi/shokunin/translate-craft"},{"id":"oakoss/agent-skills/localization-engineer"},{"id":"secondsky/claude-skills/internationalization-i18n"}]},"slug":{"owner":"vasilyu1983","repo":"AI-Agents-public","skill":"software-localisation"},"version":"cb7bddd6"}
