Loading...
Loading...
Localize ryOS apps and components by extracting hardcoded strings, replacing with translation keys, and syncing across languages. Use when localizing an app, adding i18n support, translating UI text, or working with translation files.
npx skill4agent add ryokun6/ryos localize- [ ] 1. Extract hardcoded strings
- [ ] 2. Replace with t() calls in source files
- [ ] 3. Add English translations to en/translation.json
- [ ] 4. Sync translations across languages
- [ ] 5. Machine translate [TODO] keys
- [ ] 6. Validate coveragebun run scripts/extract-strings.ts --pattern [PATTERN]import { useTranslation } from "react-i18next";const { t } = useTranslation();t("apps.[appName].category.key")tuseMemouseCallbackapps.[appName].menu.* # Menu labels
apps.[appName].dialogs.* # Dialog titles/descriptions
apps.[appName].status.* # Status messages
apps.[appName].ariaLabels.* # Accessibility labels
apps.[appName].help.* # Help items (auto-translated)// Basic
t("apps.ipod.menu.file")
// With variables
t("apps.ipod.status.trackCount", { count: 5 })
// Conditional
isPlaying ? t("pause") : t("play")
// With symbol prefix
`✓ ${t("apps.ipod.menu.shuffle")}`src/lib/locales/en/translation.json{
"apps": {
"ipod": {
"menu": { "file": "File", "addSong": "Add Song..." },
"dialogs": { "clearLibraryTitle": "Clear Library" },
"status": { "shuffleOn": "Shuffle ON" }
}
}
}bun run scripts/sync-translations.ts --mark-untranslated[TODO]bun run scripts/machine-translate.tsGOOGLE_GENERATIVE_AI_API_KEYbun run scripts/find-untranslated-strings.ts| Component | What to translate |
|---|---|
| Menu bars | All labels, items, submenus |
| Dialogs | Titles, descriptions, button labels |
| Status | |
| Help items | Auto-translated via |
apps.[appName].help.[key].title/descriptiontuseMemouseCallback