sgcLocalization: tłumaczenie aplikacji Delphi i przełączanie języka w czasie ich działania

· Komponenty
sgcLocalization: tłumaczenie aplikacji Delphi i przełączanie języka w czasie ich działania | Blog eSeGeCe
Nowy produkt · sgcLocalization

Jedna aplikacja. Pięć języków.
Przełączanych w czasie działania.

sgcLocalization tłumaczy Twoje własne aplikacje Delphi, C++Builder i Lazarus. Każdy formularz, każdy komunikat, każdą liczbę mnogą, jednym edytorem i jedną linijką kodu do zmiany języka.

  • English
  • Deutsch
  • Español
  • Français
  • Italiano
Dashboard tej samej aplikacji Delphi pokazany pięć razy, po angielsku, niemiecku, hiszpańsku, francusku i włosku, w jasnym i ciemnym motywie
1linijka do przełączenia
3frameworki
7 do 13wersje Delphi
0dodatkowych kosztów z sgcUI

Obraz powyżej przedstawia jeden plik wykonywalny. Ten sam dashboard, te same dane, po angielsku, niemiecku, hiszpańsku, francusku i włosku, a użytkownik zmienia język z listy rozwijanej, gdy aplikacja działa. Bez restartu i bez drugiej kompilacji.

Ta aplikacja została przetłumaczona za pomocą sgcLocalization, nowego produktu pakietu sgcUI. Działa z VCL, FireMonkey i LCL, od Delphi 7 do Delphi 13, w C++Builder i w Lazarus, i jest zawarty w każdej edycji sgcUI oraz w każdym pojedynczym produkcie.

sgcLocalization w jedną minutę: skanowanie, tłumaczenie i przełączanie prawdziwej aplikacji. Także na YouTube.

Zmień język jedną linijką

To cały kod, którego potrzebuje zmiana języka:

uses
  sgcLocalization_Engine;

procedure TfrmMain.btnGermanClick(Sender: TObject);
begin
  sgcSetLanguage('de');
end;

Jeśli wolisz obejść się bez kodu, upuść na formularz gotową listę języków (TsgcVCLLanguageCombo lub TsgcFMXLanguageCombo). Pokazuje języki Twojego projektu i przełącza język, gdy użytkownik wybierze jeden z nich.

Strona zamówień tej samej aplikacji po angielsku, niemiecku i włosku: pasek narzędzi, nawigacja, pole wyszukiwania, nagłówki siatki, dane i formaty liczb zmieniają się razem z językiem
Ta sama strona po angielsku, niemiecku i włosku. Pasek narzędzi, nawigacja, nagłówki siatki, podpowiedzi i dane podążają za językiem.

Przełączenie robi więcej niż podmiana podpisów:

Aby uruchamiać aplikację w języku systemu użytkownika, ustaw jedną właściwość:

sgcVCLLocalizer1.Language := 'auto';

Jak mało pracy to wymaga

1UpuśćUmieść komponent localizer na głównym formularzu.
2SkanujZbiera teksty Twoich formularzy, ramek i modułów danych.
3TłumaczRęcznie, z tłumaczem przez XLIFF lub z propozycjami AI.
4PrzełączJedna linijka kodu albo lista języków.

Localizer (TsgcVCLLocalizer dla VCL, TsgcFMXLocalizer dla FireMonkey) znajduje każdą właściwość tekstową przez RTTI. Nie oznaczasz właściwości, nie zmieniasz nazw komponentów i nie zmieniasz swoich formularzy.

Wbudowane reguły ignorowania pomijają to, co nigdy nie jest tekstem: nazwy komponentów, nazwy pól, SQL, nazwy plików, ciągi formatujące i nietekstowe właściwości samych kontrolek sgcUI. Możesz dodać własne reguły. Formularz, który miesza standardowe kontrolki i kontrolki sgcUI, jest skanowany bez zakłóceń, więc lista do przetłumaczenia zawiera teksty i nic więcej.

Teksty w kodzie: fragmenty

Nie każdy tekst znajduje się w formularzu. Komunikaty, wiersze stanu i podpisy budowane w kodzie to fragmenty. Otocz tekst wywołaniem sgcT, a stanie się tłumaczony:

if MessageDlg(sgcT('Save changes?'), mtConfirmation,
  [mbYes, mbNo], 0) = mrYes then
  SaveOrder;

To samo słowo może wymagać dwóch tłumaczeń. W języku angielskim „Open” jest zarówno poleceniem, jak i stanem zamówienia. sgcTC dodaje kontekst, więc każde znaczenie dostaje własne tłumaczenie:

btnOpen.Caption := sgcTC('command', 'Open');
lblState.Caption := sgcTC('order status', 'Open');

Liczby mnogie obsługuje sgcTN. Piszesz liczbę pojedynczą i mnogą języka źródłowego, a tłumaczenie dostarcza tyle form, ilu potrzebuje język docelowy:

lblSelected.Caption := sgcTN('%d order selected', '%d orders selected',
  Count, [Count]);

Reguły liczby mnogiej pochodzą z CLDR, więc są poprawne dla każdego języka. Polski, na przykład, dostaje cztery formy, a edytor prosi tłumacza o każdą z nich.

Jeden edytor tłumaczeń

Wszystkie tłumaczenia edytuje się w jednym miejscu. Kliknij localizer prawym przyciskiem myszy w czasie projektowania, aby otworzyć edytor wewnątrz IDE, albo użyj samodzielnego narzędzia poza nim.

Edytor tłumaczeń sgcLocalization w jasnym i ciemnym motywie: siatka z tekstem źródłowym oraz tłumaczeniami niemieckim, hiszpańskim i francuskim każdego elementu, filtry stanów i panel edycji ze źródłem, tłumaczeniem, notatką i propozycją
Edytor tłumaczeń, jasny i ciemny. Jeden wiersz na tekst, jedna kolumna na język, stan każdego elementu widoczny na pierwszy rzut oka.

Walidacja, która wyłapuje typowe błędy

Tłumaczenie, w którym zabrakło %d lub klawisza skrótu, łatwo napisać i trudno zauważyć. sgcLocalization sprawdza każde tłumaczenie, niezależnie od tego, czy zostało wpisane, zaimportowane, czy zaproponowane przez AI:

Karta walidacji edytora tłumaczeń z błędem dla specyfikatorów formatu różniących się od źródła i ostrzeżeniem dla innych podziałów wierszy
W niemieckim tekście zniknął specyfikator formatu. Jest zgłaszany jako błąd, zanim trafi do klienta.

Element z błędem nie może zostać oznaczony jako zweryfikowany, więc uszkodzony tekst nie prześlizgnie się do wydania jako gotowa praca.

Tłumaczenie przez AI, jako propozycje

Edytor potrafi tłumaczyć za pomocą usług AI, takich jak ChatGPT, Claude, Gemini i Ollama. Wybierz języki docelowe, podaj słownik i wskazówki dotyczące tonu, i uruchom.

Okno tłumaczenia przez AI: wybrane języki docelowe niemiecki i francuski, zakres nowe i zmienione teksty, słownik i instrukcje dotyczące formalnego tonu
Języki docelowe, zakres, słownik i instrukcje dla tłumaczenia przez AI.

Wyniki przychodzą jako propozycje. Każdą z nich akceptujesz lub odrzucasz, a propozycja nigdy nie nadpisuje tekstu, który jest już przetłumaczony. Działa na nich ta sama walidacja.

Warto wiedzieć. Tłumaczenie przez AI korzysta z dostawcy AI sgcUI. Wymienione usługi wymagają sgcWebSockets. Bez niego zdarzenie pozwala wywołać dowolną usługę z własnego kodu.

XLIFF dla profesjonalnych tłumaczy

Biura tłumaczeń pracują z XLIFF. sgcLocalization eksportuje XLIFF 1.2 dla wybranego języka i importuje plik, gdy wróci.

Import nigdy nie zapisuje niczego bezpośrednio w Twoim projekcie. Otwiera listę przeglądu ze wszystkimi zmianami: stary tekst, nowy tekst, rodzaj zmiany i ewentualny znaleziony problem. Stosowane są tylko wiersze, które zaznaczysz.

Lista przeglądu importu XLIFF dla francuskiego pliku: każdy wiersz pokazuje element, rodzaj zmiany, stary i nowy tekst, nowy stan i problemy, z polem wyboru do zastosowania
Przegląd importu XLIFF. Wiersze z problemami pozostają niezaznaczone i nic nie jest stosowane, dopóki nie klikniesz Zastosuj.

Jeden plik projektu

Tłumaczenia aplikacji znajdują się w jednym pliku projektu z rozszerzeniem .sgcloc. To JSON, więc dobrze współpracuje z kontrolą wersji: zmienione tłumaczenie to mała różnica, którą można przeczytać podczas przeglądu kodu. Jeśli wolisz pojedynczy plik wykonywalny bez niczego obok, projekt można zamiast tego osadzić w pliku formularza.

Zobacz to w prawdziwej aplikacji

Demo pokazowe to Order Desk, kompletna aplikacja biznesowa: dashboard, zamówienia, klienci, planer, analiza przestawna, kreator i podgląd wydruku. Jest przetłumaczona na angielski, niemiecki, hiszpański, francuski i włoski, i występuje w wersjach VCL, FireMonkey i Lazarus.

Strona planera dema Order Desk po francusku: widok tygodnia z dostawami, francuskie nazwy dni, pasek narzędzi i nawigacja
Planer Order Desk po francusku. Nazwy dni, widoki i spotkania podążają za językiem.

W folderze dem są także trzy szybkie starty, samodzielne narzędzie edytora tłumaczeń oraz przewodnik Getting Started, który prowadzi od pustego formularza do przetłumaczonej aplikacji.

Zawarty w sgcUI

sgcLocalization jest dostarczany z sgcUI 2026.12.0. Nie jest sprzedawany osobno: jest zawarty w każdej edycji sgcUI i w każdym pojedynczym produkcie, a w instalatorze jest wybrany domyślnie.

Twoja aplikacja w języku Twojego klienta

Pobierz sgcUI, otwórz demo Order Desk i zmień język, gdy działa. Potem upuść localizer na własny główny formularz.

Masz pytania lub uwagi? Skontaktuj się z nami, odpowiedzą Ci osoby, które napisały ten kod.