Przejdź do treści

Tłumaczenia

Każdy widoczny dla użytkownika string pokazywany przez wtyczkę musi być tłumaczalny, z katalogami dla wszystkich czterech obsługiwanych języków — en, pl, de, fr — zanim wtyczkę można uznać za skończoną. To ta sama poprzeczka co testy.

Katalogi

Każda wtyczka mająca jakikolwiek string niesie po jednym katalogu .ts na język w swoim folderze Translations/:

Translations/
  MyPlugin_en.ts
  MyPlugin_pl.ts
  MyPlugin_de.ts
  MyPlugin_fr.ts

Podepnij je do builda przez mte_add_plugin:

mte_add_plugin(NAME MyPlugin
    SOURCES Src/MyPlugin.cpp
    TRANSLATIONS
        Translations/MyPlugin_en.ts
        Translations/MyPlugin_pl.ts
        Translations/MyPlugin_de.ts
        Translations/MyPlugin_fr.ts
)

Build uruchamia lrelease, aby przygotować pliki .qm; TranslationManager ładuje je w czasie działania po nazwie katalogu (katalogi wtyczek pod Plugins/Translations/<Plugin>/).

Oznaczanie stringów do tłumaczenia

  • Dla zwykłych stringów UI preferuj QObject::tr(...) (kontekst = klasa).
  • Helper tr_() opakowuje QCoreApplication::translate("<Context>", s) dla stringów poza QObject.

tr_() jest niewidoczny dla lupdate

lupdate nie potrafi rozwiązać kontekstu wewnątrz tr_(), więc te katalogi utrzymywane są ręcznie. Utrzymuj tekst <source> bajt w bajt identyczny ze stringiem w czasie działania, inaczej tłumaczenie po cichu się nie zastosuje.

Definicja ukończenia

Lokalizacja wtyczki jest skończona dopiero wtedy, gdy wszystkie cztery pliki .ts istnieją, są podpięte, a lrelease raportuje 0 unfinished.