Rozszerzenie Project Translator dla VSCode - implementacja wielojęzycznej lokalizacji projektu
Categories:
Rozszerzenie Project Translator dla VSCode zapewnia deweloperom wydajne rozwiązanie do wielojęzycznej lokalizacji projektów. To rozszerzenie wykorzystuje technologię AI do automatycznego tłumaczenia, od pojedynczych plików po całe foldery projektów, zachowując przy tym integralność struktury i formatowania kodu, co znacząco redukuje nakład pracy na lokalizację dokumentacji. Dla projektów open source lub oprogramowania komercyjnego skierowanego do globalnej publiczności, Project Translator znacząco poprawia efektywność i spójność tłumaczeń. W porównaniu do tradycyjnych metod ręcznego tłumaczenia, tego typu narzędzia automatyzujące potrafią obsłużyć duże wolumeny dokumentacji, szczególnie przydatne w przypadku projektów, które są stale aktualizowane.
Kluczowe funkcje i cechy
Rozszerzenie Project Translator oferuje szereg zaawansowanych funkcji, które razem tworzą kompleksowe rozwiązanie do wielojęzycznego tłumaczenia projektów. Rozszerzenie obsługuje dwa tryby tłumaczenia: na poziomie folderu i na poziomie pliku, co pozwala na elastyczne dostosowanie do potrzeb projektu. W trybie tłumaczenia folderów, rozszerzenie rekurencyjnie przetwarza podfoldery, automatycznie wykrywa treści do przetłumaczenia i zachowuje oryginalną strukturę folderów oraz hierarchię. Ten mechanizm przetwarzania wsadowego sprawia, że tłumaczenie dużych projektów staje się wykonalne i wydajne. Rozszerzenie można bezpłatnie pobrać i zainstalować z VS Code Extensions Marketplace oraz Open VSX Registry.
Inteligentne tłumaczenie jest jedną z kluczowych zalet rozszerzenia. W trakcie procesu tłumaczenia rozszerzenie automatycznie utrzymuje integralność struktury kodu, tłumacząc tylko komentarze kodu i treści dokumentacji, podczas gdy logika kodu pozostaje niezmieniona. W przypadku formatów danych strukturalnych takich jak JSON czy XML, rozszerzenie również potrafi zachować ich oryginalną integralność strukturalną. To podejście gwarantuje, że przetłumaczone pliki kodu nadal mogą być prawidłowo kompilowane i uruchamiane, unikając problemów z uszkodzeniem kodu spowodowanym tłumaczeniem. Rozszerzenie zapewnia również profesjonalną jakość tłumaczenia dokumentacji technicznej, potrafiąc precyzyjnie rozumieć terminy techniczne i kontekst.
Elastyczność konfiguracji to kolejna ważna cecha Project Translator. Użytkownicy mogą konfigurować foldery źródłowe i wiele folderów docelowych, dostosowywać interwał tłumaczenia plików, określać typy plików do pominięcia oraz wybierać spośród wielu opcji modeli AI. Ta elastyczność pozwala rozszerzeniu dostosowywać się do różnych struktur projektów i potrzeb tłumaczeniowych. Rozszerzenie obsługuje wiele popularnych modeli AI, w tym OpenAI, DeepSeek, Grok, pozwalając użytkownikom na wybór odpowiedniego modelu zgodnie z budżetem i wymaganiami jakościowymi. Dla projektów wykorzystujących Hugo lub inne generatory stron statycznych, to podejście oparte na konfiguracji folderów jest szczególnie przyjazne.
Interfejs użytkownika rozszerzenia został zaprojektowany z myślą o wygodzie użytkowania. Podczas tłumaczenia wyświetlana jest aktualizacja postępu w czasie rzeczywistym, a użytkownik może w każdej chwili wstrzymać, wznowić lub zatrzymać zadanie tłumaczenia. Rozszerzenie automatycznie utrzymuje strukturę folderów docelowych i obsługuje tłumaczenie przyrostowe, aby uniknąć powtarzania pracy. Ta kontrola jest szczególnie ważna, gdy zadanie tłumaczenia wymaga dłuższego czasu. Ponadto, rozszerzenie oferuje eksperymentalną funkcję tłumaczenia różnicowego, która tłumaczy tylko zmienione treści, redukując w ten sposób użycie API i lepiej zachowując historię wersji.
Przepływ pracy tłumaczenia
Przepływ pracy tłumaczenia w Project Translator został starannie zaprojektowany, aby zapewnić, że cały proces jest zarówno wydajny, jak i niezawodny. Po uruchomieniu zadania tłumaczenia przez panel poleceń, rozszerzenie zgodnie z wstępnie zdefiniowanym przepływem stopniowo przetwarza zawartość źródłową i generuje wersje w językach docelowych.
flowchart TD
A[Użytkownik uruchamia polecenie tłumaczenia] e1@--> B{Sprawdź konfigurację}
B e2@-->|Nie skonfigurowano| C[Pokaż okno wyboru folderu]
C e3@--> D[Zapisz wybrane przez użytkownika ścieżki źródłowe i docelowe]
D e4@--> E[Skanuj pliki i foldery źródłowe]
B e5@-->|Skonfigurowano| E
E e6@--> F[Zidentyfikuj pliki do przetłumaczenia]
F e7@--> G[Uporządkuj zadania tłumaczenia według priorytetów]
G e8@--> H{Użytkownik wybiera tryb tłumaczenia}
H e9@-->|Tłumaczenie standardowe| I[Odczytaj zawartość pliku źródłowego]
H e10@-->|Tłumaczenie różnicowe| J[Odczytaj zawartość plików źródłowych i docelowych]
I e11@--> K[Wywołaj model AI do tłumaczenia]
J e12@--> K
K e13@--> L[Wygeneruj wynik tłumaczenia]
L e14@--> M{Zweryfikuj jakość tłumaczenia}
M e15@-->|Weryfikacja powiodła się| N[Zapisz do pliku docelowego]
M e16@-->|Weryfikacja nie powiodła się| O[Cofnij lub spróbuj ponownie]
N e17@--> P[Zaktualizuj postęp tłumaczenia]
P e18@--> Q{Czy są jeszcze pliki do przetłumaczenia?}
Q e19@-->|Tak| I
Q e20@-->|Nie| R[Zakończ zadanie tłumaczenia]
R e21@--> S[Pokaż podsumowanie tłumaczenia]
classDef start fill:#E3F2FD,stroke:#1565C0,stroke-width:1px,color:#0D47A1;
classDef work fill:#E8F5E9,stroke:#2E7D32,stroke-width:1px,color:#1B5E20;
classDef check fill:#FFF8E1,stroke:#EF6C00,stroke-width:1px,color:#E65100;
classDef done fill:#F3E5F5,stroke:#6A1B9A,stroke-width:1px,color:#4A148C;
classDef animate stroke:#EF6C00,stroke-width:2px,stroke-dasharray: 9\,5,stroke-dashoffset: 900,animation: dash 25s linear infinite;
class A start;
class e1,e2,e3,e4,e5,e6,e7,e8,e9,e10,e11,e12,e13,e14,e15,e16,e17,e18,e19,e20,e21 animate;
class B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S work;
class B,H,M,Q check;
class S done;
Przepływ rozpoczyna się od wyboru polecenia tłumaczenia przez użytkownika w panelu poleceń. Rozszerzenie najpierw sprawdza, czy ścieżki źródłowe i docelowe są już skonfigurowane. Jeśli nie są skonfigurowane, wyświetla okno wyboru folderu, aby użytkownik mógł określić ścieżki. Po skonfigurowaniu, rozszerzenie zaczyna skanować wszystkie pliki i podfoldery w folderze źródłowym, identyfikując typy plików wymagające tłumaczenia. Rozszerzenie filtruje pliki, które nie wymagają przetwarzania, zgodnie ze skonfigurowanymi regułami rozszerzeń plików i ścieżek.
Po zidentyfikowaniu, rozszerzenie sortuje zadania tłumaczenia według określonego priorytetu, zapewniając, że ważniejsze pliki są tłumaczone w pierwszej kolejności. Użytkownik może wybrać tryb tłumaczenia standardowego lub różnicowego. Tryb standardowy tłumaczy pełną zawartość pliku, podczas gdy tryb różnicowy tłumaczy tylko zmienione fragmenty, co jest bardziej odpowiednie dla aktualizacji już przetłumaczonych treści. Po odczytaniu zawartości pliku źródłowego, rozszerzenie wywołuje skonfigurowany model AI do przetwarzania tłumaczenia.
Po otrzymaniu wyniku tłumaczenia od modelu AI, rozszerzenie weryfikuje jakość tłumaczenia. Proces weryfikacji obejmuje sprawdzenie integralności formatowania, spójności terminologii oraz czy zachowano niezbędną strukturę kodu. Jeśli weryfikacja się powiedzie, wynik tłumaczenia jest zapisywany do pliku docelowego, zachowując tę samą strukturę katalogów co plik źródłowy. Jeśli weryfikacja nie powiedzie się, rozszerzenie próbuje wykonać operację cofnięcia lub ponownie przetłumaczyć. Po zakończeniu tłumaczenia każdego pliku, rozszerzenie aktualizuje postęp tłumaczenia, aż wszystkie pliki zostaną przetłumaczone. Na koniec, rozszerzenie wyświetla podsumowanie zadania tłumaczenia, zawierające liczbę pomyślnie przetłumaczonych plików, listę plików, których tłumaczenie się nie powiodło, oraz statystyki czasowe.
Szczegółowy opis konfiguracji
System konfiguracji rozszerzenia Project Translator został zaprojektowany tak, aby był zarówno elastyczny, jak i intuicyjny. Użytkownicy mogą dostosowywać zachowanie rozszerzenia poprzez interfejs ustawień VSCode lub bezpośrednią edycję pliku konfiguracyjnego. Podstawowe opcje konfiguracji obejmują ścieżki źródłowe i docelowe tłumaczenia, parametry modelu AI, reguły filtrowania itp.
Opcje konfiguracji dzielą się głównie na kilka kategorii. Konfiguracja folderów i plików definiuje ścieżki wejścia i wyjścia tłumaczenia, pozwalając użytkownikowi na określenie wielu folderów źródłowych oraz odpowiadających im folderów docelowych. Każdy folder źródłowy i docelowy wymaga podania kodu języka. Rozszerzenie obsługuje 28 języków, w tym chiński uproszczony, chiński tradycyjny, japoński, koreański, angielski, francuski, niemiecki, hiszpański, portugalski, rosyjski i inne główne języki. Taka konfiguracja wielu języków docelowych pozwala na jednoczesne generowanie wielu wersji językowych w jednym zadaniu tłumaczenia, znacząco zwiększając efektywność.
Konfiguracja modelu AI pozwala użytkownikom na wybór różnych dostawców usług tłumaczeniowych i modeli. Rozszerzenie domyślnie używa modelu DeepSeek, ale obsługuje również inne usługi takie jak OpenAI czy Grok. Użytkownicy mogą konfigurować endpoint API, klucz API, nazwę modelu, liczbę żądań na minutę, maksymalną liczbę tokenów na segment, czas oczekiwania, parametr temperatury itp. Aby zwiększyć bezpieczeństwo, rozszerzenie obsługuje zarządzanie kluczami API przez zmienne środowiskowe, unikając bezpośredniego zapisywania poufnych informacji w pliku konfiguracyjnym.
Konfiguracja reguł filtrowania i pomijania pozwala użytkownikom na precyzyjną kontrolę nad tym, które pliki wymagają tłumaczenia, a które należy zignorować. Opcja ignore pozwala określić ścieżki i rozszerzenia plików, które mają być całkowicie pominięte. Domyślnie pomijane są katalog node_modules oraz pliki .log. Opcja copyOnly służy do określenia typów plików, które mają być kopiowane, ale nie tłumaczone. Opcja skipFrontMatterMarkers pozwala użytkownikom na pomijanie tłumaczenia na podstawie metadanych front matter plików Markdown, na przykład pomijanie dokumentów oznaczonych jako szkice.
Zaawansowane opcje konfiguracji obejmują język podpowiedzi systemowych, tryb debugowania, konfigurację plików dziennika oraz tryb tłumaczenia różnicowego. Język podpowiedzi systemowych kontroluje język używany wewnątrz rozszerzenia, domyślnie jest to angielski. Włączenie trybu debugowania powoduje rejestrowanie wszystkich żądań i odpowiedzi API, co ułatwia rozwiązywanie problemów. Konfiguracja plików dziennika pozwala użytkownikom zapisywać dzienniki debugowania do pliku, z możliwością dostosowania ścieżki, limitów rozmiaru pliku i liczby plików. Tryb tłumaczenia różnicowego jest funkcją eksperymentalną, która po włączeniu tłumaczy tylko zmienione treści, redukując niepotrzebne wywołania API.
Konfiguracja podpowiedzi użytkownika to charakterystyczna funkcja rozszerzenia. Użytkownicy mogą dostosowywać serię podpowiedzi, które są wysyłane do modelu AI po podpowiedziach systemowych. Dzięki temu użytkownicy mogą kierować modelem tłumaczenia, aby przestrzegał określonego stylu tłumaczenia, standardów terminologicznych lub wymagań formatowania. Na przykład, użytkownik może określić, że gdy pole front matter draft w pliku Markdown ma wartość true, nie należy go tłumaczyć, lub wymagać zastąpienia ./readmes/ przez ./ w ścieżkach.
Poniżej znajduje się typowy przykład konfiguracji:
{
"projectTranslator.specifiedFolders": [
{
"sourceFolder": {
"path": "${workspaceFolder}/content/en",
"lang": "en-us"
},
"targetFolders": [
{
"path": "${workspaceFolder}/content/zh-cn",
"lang": "zh-cn"
},
{
"path": "${workspaceFolder}/content/ja-jp",
"lang": "ja-jp"
}
]
}
],
"projectTranslator.currentVendor": "deepseek",
"projectTranslator.vendors": [
{
"name": "deepseek",
"apiEndpoint": "https://api.deepseek.com/v1",
"apiKeyEnvVarName": "DEEPSEEK_API_KEY",
"model": "deepseek-chat",
"rpm": 20,
"maxTokensPerSegment": 3000,
"timeout": 300,
"temperature": 0.1
}
],
"projectTranslator.ignore": {
"paths": ["**/node_modules/**", "**/.git/**"],
"extensions": [".log", ".min.js"]
},
"projectTranslator.userPrompts": [
"1. Należy zwrócić brak potrzeby tłumaczenia, jeśli plik Markdown ma pole 'draft' ustawione na 'true' w front matter.",
"2. Zachowaj spójność terminologii technicznej we wszystkich przetłumaczonych plikach."
]
}
Przykłady zastosowań w praktyce
Rozszerzenie Project Translator zostało już zweryfikowane i zastosowane w wielu rzeczywistych projektach. Organizacja Project Translation utrzymuje wiele przykładowych projektów tłumaczeniowych, które obejmują różne dziedziny, takie jak wizualizacja algorytmów, dokumentacja języków programowania, przewodniki po narzędziach deweloperskich. Dzięki tym rzeczywistym przypadkom można bardziej intuicyjnie zrozumieć scenariusze zastosowań i efekty rozszerzenia.
Projekt algorithm-visualizer to interaktywna platforma wizualizacji algorytmów, której oryginalny projekt ma ponad 47 000 gwiazdek na GitHub. Po zastosowaniu rozszerzenia Project Translator, dokumentacja tego projektu została przetłumaczona na wiele języków, pomagając globalnym deweloperom lepiej zrozumieć zasady algorytmów i efekty wizualizacji. Projekt gobyexample to zbiór tutoriali z przykładami kodu w języku Go, mający ponad 7 500 gwiazdek. Po przetłumaczeniu za pomocą rozszerzenia, uczniowie mogą czytać przykłady kodu i opisy w języku Go w swoim ojczystym języku.
Google Style Guide to przewodnik stylu projektu open source pochodzący od Google, mający ponad 38 000 gwiazdek, obejmujący standardy kodowania dla wielu języków programowania. Dzięki rozszerzeniu Project Translator, te przewodniki stylu zostały przetłumaczone na wiele języków, pozwalając globalnym deweloperom uczyć się najlepszych praktyk kodowania w znanym im języku. Projekt reference-en-us to zbiór szybkich arkuszy referencyjnych dla deweloperów, mający ponad 7 800 gwiazdek, dostarczający szybkich informacji referencyjnych dla wielu narzędzi i języków, takich jak awk, bash, CSS, Golang, Python, Vim.
Te rzeczywiste przypadki zastosowań pokazują uniwersalność rozszerzenia Project Translator w różnych typach projektów. Niezależnie od tego, czy są to dokumentacje techniczne, tutoriale czy podręczniki referencyjne, rozszerzenie potrafi dostarczać wysokiej jakości wyniki tłumaczenia. Rozszerzenie nie tylko radzi sobie z czystymi treściami tekstowymi, ale także prawidłowo obsługuje pliki Markdown zawierające złożone formatowanie, takie jak bloki kodu, tabele, linki. W przypadku projektów zawierających dużą liczbę terminów technicznych, inteligentne możliwości tłumaczenia rozszerzenia utrzymują spójność i dokładność terminologii. Filozofia projektowania rozszerzenia jest w pełni zgodna z zasadami otwartości ekosystemu VS Code, zapewniając deweloperom dostosowane wsparcie funkcjonalne poprzez mechanizm rozszerzeń.
Podsumowanie
Rozszerzenie Project Translator dla VSCode zapewnia wydajne i niezawodne rozwiązanie do wielojęzycznej lokalizacji projektów. To rozszerzenie łączy zaawansowaną technologię AI z praktycznym projektem inżynieryjnym, realizując zautomatyzowany przepływ tłumaczenia przy zachowaniu integralności struktury kodu. Obsługa tłumaczenia na poziomie folderów i plików, elastyczne opcje konfiguracji oraz przyjazny interfejs użytkownika sprawiają, że jest to idealne narzędzie dla projektów skierowanych do globalnej publiczności.
Główną zaletą rozszerzenia jest jego inteligentna zdolność tłumaczenia, która precyzyjnie rozpoznaje treści kodu i dokumentacji, tłumacząc tylko wymagające tłumaczenia fragmenty, unikając naruszenia wykonywalności kodu. Wprowadzenie funkcji tłumaczenia różnicowego dodatkowo zwiększa efektywność tłumaczenia, co jest szczególnie wartościowe w przypadku ciągłych aktualizacji dużych projektów. System konfiguracji rozszerzenia jest dobrze zaprojektowany, oferując zarówno bogate opcje dostosowywania, jak i zachowując prostotę konfiguracji, co pozwala użytkownikom o różnym poziomie zaawansowania szybko rozpocząć pracę.
Rozszerzenie Project Translator zostało już zweryfikowane w wielu znanych projektach open source, takich jak algorithm-visualizer, gobyexample, Google Style Guide. Te udane przypadki potwierdzają praktyczną wartość i niezawodność rozszerzenia. Dla projektów wymagających wsparcia wielojęzycznego, szczególnie dokumentacji open source o dużej gęstości, rozszerzenie Project Translator może znacząco zmniejszyć nakład pracy na lokalizację, podnosząc jakość i spójność tłumaczeń.
Otwarty charakter rozszerzenia nadaje mu również dobrą skalowalność i potencjał wsparcia społeczności. Użytkownicy mogą dostosowywać i rozszerzać je zgodnie ze swoimi potrzebami, a członkowie społeczności mogą uczestniczyć w ulepszaniu i doskonaleniu rozszerzenia. W miarę ciągłego postępu technologii AI i rosnącego zapotrzebowania na wielojęzyczność, rozszerzenie Project Translator ma szansę odegrać jeszcze większą rolę w dziedzinie lokalizacji projektów.