localize
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.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
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.
How to use
Uruchom skrypt do wyodrębniania tekstów: bun run scripts/extract-strings.ts --pattern [PATTERN], gdzie [PATTERN] to wzorzec plików do przeskanowania. Skill przeskanuje komponenty i znajdzie wszystkie zakodowane na stałe stringi.
W każdym komponencie dodaj import react-i18next: import { useTranslation } from "react-i18next", następnie użyj hooka const { t } = useTranslation(). Zamień znalezione teksty na wywołania t() z kluczami w formacie apps.[nazwaAplikacji].kategoria.klucz, na przykład t("apps.ipod.menu.file") dla etykiet menu czy t("apps.ipod.dialogs.clearLibraryTitle") dla tytułów okien.
Dodaj angielskie tłumaczenia do pliku src/lib/locales/en/translation.json, zachowując strukturę zagnieżdżoną: apps > nazwa aplikacji > kategoria (menu, dialogs, status, ariaLabels, help) > klucz. Na przykład {"apps": {"ipod": {"menu": {"file": "File"}}}}.
Zsynchronizuj tłumaczenia między wszystkimi językami: bun run scripts/sync-translations.ts --mark-untranslated. Skill doda brakujące klucze do wszystkich plików języków i oznacz je jako [TODO].
Przejrzyj wygenerowane klucze i upewnij się, że struktura jest spójna. Możesz używać zmiennych w tłumaczeniach, na przykład t("apps.ipod.status.trackCount", { count: 5 }), oraz warunkowych wyrażeń t() w logice komponentu.