ryokun6/ryos
Overview
This skill localizes ryOS apps and components by extracting hardcoded strings, replacing them with translation keys, and syncing translations across languages. It streamlines adding i18n support, managing translation files, and preparing keys for machine translation. Use it to ensure UI text, dialogs, menus, and status messages are language-ready and consistent.
How this skill works
The skill inspects source files to extract hardcoded strings and replaces them with t() calls following a predictable key structure (apps.[appName].category.key). It adds English entries to the master translation file, syncs missing keys across other language files with a TODO marker, and can trigger machine translation for untranslated keys. Validation tools report remaining untranslated strings and missing coverage.
When to use it
- When adding i18n support to a new or existing ryOS app or component
- Before shipping UI changes that introduce new user-facing text
- When consolidating localization keys and ensuring consistent key structure
- When preparing translation files for translators or machine translation
- When validating that all visible strings are covered in translation files
Best practices
- Follow the key hierarchy: apps.[appName].menu/dialogs/status/ariaLabels/help
- Keep emoji and symbols hardcoded (e.g., ✓, ♪) and translate textual content only
- Import useTranslation and add const { t } = useTranslation() in each component
- Include t in useMemo/useCallback dependency arrays whenever used inside hooks
- Run extraction, sync, and validation scripts as part of your localization workflow
Example use cases
- Extract and replace hardcoded menu labels with t("apps.myApp.menu.file") and add entries to en/translation.json
- Sync newly added keys across all language files and mark missing translations with [TODO]
- Run machine translation to prefill untranslated entries before human review
- Validate a component to find untranslated strings shown via showStatus() or toasts
- Localize dialogs by replacing titles and descriptions and adding corresponding keys under apps.[appName].dialogs
FAQ
Emoji and non-text symbols (for example ♪ or ✓) may remain hardcoded; all user-facing textual content should use translation keys.
How are missing translations marked?
Missing keys are added to each language file and prefixed or suffixed with a [TODO] marker so translators can find them easily.
2 skills
This skill helps you localize ryOS apps by extracting strings, replacing with translation keys, and syncing translations across languages.
This skill helps you design and style UI components across the four OS themes, ensuring consistent retro aesthetics and theme-aware behavior.