Umiejętności i18n
Polecenia AI do audytu i opakowywania ciągów i18n
Problem
W Twojej bazie kodu znajduje się 500 ciągów zapisanych na stałe i rozproszonych po komponentach, szablonach i widokach. Ręczne obejmowanie ich funkcją tłumaczącą wymaga wielu dni żmudnego wyszukiwania i zastępowania. Nawet po wykonaniu tej pracy można przeoczyć podzielone zdania, które nie działają po niemiecku, logikę liczby mnogiej zawodzącą po arabsku oraz osierocone klucze powiększające pliki językowe.
Rozwiązanie
Dwa polecenia AI z ukośnikiem obsługują cały proces i18n. Uruchom /i18n-review, aby przeprowadzić audyt kodu tylko do odczytu, a następnie /i18n-wrap, aby automatycznie wszystko naprawić. Oba polecenia wykrywają framework, rozumieją format plików językowych i walidują zmiany przed zatwierdzeniem.
/i18n-review
Audyt tylko do odczytu, który znajduje podzielone zdania, uszkodzone formy liczby mnogiej, nieopakowane ciągi i nieużywane klucze. Nigdy nie zmienia kodu.
/i18n-wrap
Automatycznie obejmuje ciągi zapisane na stałe właściwą funkcją tłumaczącą, generuje semantyczne klucze, aktualizuje pliki językowe i waliduje kompilację.
Polecenie /i18n-review
Polecenie review przeprowadza audyt bazy kodu tylko do odczytu. Skanuje każdy plik pod kątem problemów i18n i tworzy raport uporządkowany według priorytetu z dokładnymi lokalizacjami plików oraz propozycjami poprawek. Kod nigdy nie jest modyfikowany.
/i18n-review src/
/i18n-review src/ --framework=next-intlCo sprawdza
- Podzielone zdania: połączone wywołania t(), które zaburzają szyk wyrazów w innych językach
- Nadmierne opakowywanie: ciągi techniczne, klasy CSS, adresy URL i wartości enum niepotrzebnie objęte funkcją t()
- Niedostateczne opakowywanie: widoczne ciągi interfejsu, takie jak etykiety przycisków, nagłówki i komunikaty o błędach, pozostawione na stałe
- Problemy z liczbą mnogą: operatory trójargumentowe lub kontrole === 1 zamiast poprawnej składni liczby mnogiej ICU
- Nieużywane klucze: klucze tłumaczeń zdefiniowane w plikach językowych, ale nigdy nieprzywoływane w kodzie
- Wartości formatu zapisane na stałe: daty, waluty i liczby bez użycia formaterów Intl
Polecenie /i18n-wrap
Polecenie wrap automatycznie obejmuje ciągi zapisane na stałe właściwą dla frameworka funkcją tłumaczącą. Wykrywa bibliotekę i18n, generuje semantyczne klucze pogrupowane według komponentu lub funkcji, aktualizuje pliki językowe i sprawdza, czy kompilacja nadal się udaje.
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18nextCo robi
- Wykrywanie frameworka: rozpoznaje bibliotekę i18n i jej funkcję tłumaczącą (t, $t, $_, gettext itd.)
- Generowanie semantycznych kluczy: tworzy znaczące klucze, takie jak nav.signIn i errors.notFound, zamiast ogólnych etykiet
- Aktualizowanie plików językowych: dodaje nowe klucze do źródłowego pliku językowego we właściwym formacie (JSON, YAML, PO itd.)
- Walidacja kompilacji: po opakowaniu uruchamia polecenia kompilacji, lintowania i testów, aby wykryć regresje
Obsługiwane frameworki
Oba polecenia automatycznie wykrywają framework na podstawie zależności projektu. Możesz też wskazać go jawnie za pomocą flagi --framework. Oto 10 obsługiwanych frameworków wraz z ich funkcjami tłumaczącymi i formatami liczby mnogiej.
| Framework | Funkcja tłumacząca | Format liczby mnogiej |
|---|---|---|
| react-i18next | t() | key_one / key_other |
| next-intl | t() | ICU {count, plural, ...} |
| vue-i18n | $t() | Pipe syntax | singular | plural |
| angular i18n | $localize | ICU {count, plural, ...} |
| svelte-i18n | $_() | ICU {count, plural, ...} |
| flutter intl | S.of(context) | Intl.plural() |
| django | gettext / _() | ngettext() |
| rails i18n | t() | count key |
| laravel | __() / @lang | trans_choice() |
| swift | NSLocalizedString | .stringsdict |
Instalacja
Skopiuj pliki poleceń do katalogu .claude/commands/. To wszystko — bez zależności i konfiguracji. Polecenia są zwykłymi plikami Markdown, które może wykonać każdy programistyczny asystent AI.
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/Przykłady użycia
Projekt React
Sprawdź aplikację React używającą react-i18next, a następnie opakuj wszystkie ciągi zapisane na stałe. Polecenia wykrywają react-i18next na podstawie pliku package.json i używają właściwej funkcji t() oraz formatu liczby mnogiej key_one/key_other.
# Review a React project for i18n issues
/i18n-review src/ --framework=react-i18next
# Wrap all hardcoded strings automatically
/i18n-wrap src/components/ --framework=react-i18next
# Result: t() calls inserted, keys added to en/translation.jsonProjekt Django
Przeprowadź audyt szablonów i widoków Django pod kątem problemów i18n, a następnie opakuj ciągi za pomocą gettext. Polecenia wykrywają Django na podstawie pliku settings.py i używają _() dla prostych ciągów oraz ngettext() dla liczby mnogiej.
# Review Django templates and views
/i18n-review myapp/ --framework=django
# Wrap hardcoded strings with gettext
/i18n-wrap myapp/templates/ --framework=django
# Result: _() calls inserted, .po file updatedPowiązane przewodniki po frameworkach
Wypróbuj i18n Agent
Upuść tutaj plik tłumaczenia
JSON, YAML, PO, XML, CSV, Markdown, Properties
lub kliknij, aby go wybrać
Języki docelowe