Skip to main content

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.

Ręczne opakowywanie ciągów i18n sprzyja błędom: programiści pomijają podzielone zdania, psują liczbę mnogą operatorami trójargumentowymi i pozostawiają ciągi zapisane na stałe w przypadkach brzegowych. Błędy wychodzą na jaw dopiero po tłumaczeniu, gdy ich naprawa kosztuje 10 razy więcej.

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.

Terminal
/i18n-review src/
/i18n-review src/ --framework=next-intl

Co 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 review działa wyłącznie w trybie odczytu. Uruchamiaj je dowolnie często podczas programowania lub w pipeline CI/CD bez ryzyka niezamierzonych zmian.

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.

Terminal
/i18n-wrap src/components/
/i18n-wrap src/ --framework=react-i18next

Co 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
Polecenie wrap waliduje każdą zmianę, uruchamiając kompilację i zestaw testów. Jeśli coś się nie powiedzie, automatycznie wycofuje zmiany.

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.

FrameworkFunkcja tłumaczącaFormat liczby mnogiej
react-i18nextt()key_one / key_other
next-intlt()ICU {count, plural, ...}
vue-i18n$t()Pipe syntax | singular | plural
angular i18n$localizeICU {count, plural, ...}
svelte-i18n$_()ICU {count, plural, ...}
flutter intlS.of(context)Intl.plural()
djangogettext / _()ngettext()
rails i18nt()count key
laravel__() / @langtrans_choice()
swiftNSLocalizedString.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.

Terminal
mkdir -p .claude/commands
cp commands/i18n-review.md .claude/commands/
cp commands/i18n-wrap.md .claude/commands/
Są to standardowe pliki poleceń z ukośnikiem. Działają od razu w Claude Code i można je dostosować do innych programistycznych asystentów AI obsługujących niestandardowe polecenia.

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.

React Project
# 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.json

Projekt 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.

Django Project
# 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 updated

Wypróbuj i18n Agent

Upuść tutaj plik tłumaczenia

JSON, YAML, PO, XML, CSV, Markdown, Properties

lub kliknij, aby go wybrać

Języki docelowe

Rejestracja nie jest wymaganaNatychmiastowa wycena

Najczęściej zadawane pytania