Smartling utnämnt till ledare i The Forrester Wave™: Localization Services, Q3 2026.
Smartling utsedd till ledare i The Forrester Wave™

Kan Qt lokaliseringsverktyg stödja flera språk effektivt?

Qt lokaliseringsverktyg stöder flera språk effektivt eftersom Qts .ts translation-source-format och Qt Linguist strukturerar båda översättbar text som kontextomfattande, pluralmedveten data snarare än strängar inbäddade i kod. Qts lupdate-verktyg extraherar varje tr (), qStr () och QT_TRANSLATE_NOOP () -anrop från ett programs C++- och QML-källa till en.ts fil per språk, och lrelease kompilerar den översatta filen till binären.qm formatera programladdningarna vid körning. Smartling tolkar .ts filer som är infödda under en dedikerad qt-filtyp - inte som generisk XML - så ett Qt-projekt kan dirigera dessa filer genom en översättningsplattform utan ett manuellt konverteringssteg, och Qts pluralsyntax (numerus= " ja ", numerusform) fångas automatiskt snarare än att kräva anpassade direktiv.

Senast granskad: 17 september 2026

Vilka är de vanligaste utmaningarna när du använder Qt Linguist för lokalisering?

De vanligaste utmaningarna med Qt Linguist kommer från hur .ts Översättningskällfiler genereras och hålls synkroniserade med en rörlig C++/QML-kodbas, inte från själva Linguist-redigeraren.

  • Sammanhangsomfång. Varje tr () -anrops översättningskontext har som standard namnet på dess omslutande QObject underklass (inställd genom makrot Q_OBJECT), så samma engelska sträng som används i två olika klasser spåras — och kan översättas — som två separata poster. Lag som inte känner till denna struktur spenderar ofta realtid på att jaga vad som ser ut som en dubblettsträng som Qt korrekt har hållit separat.
  • Regenerering och drift. lupdate måste köras om varje gång källsträngar ändras, och en sträng utanför ett tr ()/qStr() -anrop behöver rätt QT_TR_NOOP () eller QT_TRANSLATE_NOOP () makro för att plockas upp alls - hoppa över makrot och strängen är tyst frånvarande från .ts filen, även om den fortfarande återges i den körande appen.
  • Flertalshantering. Qts %n pluralsyntax och numerus= " ja " / numerusform -strukturen i .ts filen kräver varje pluralkategori som ett målspråk behöver fyllas i; en saknad form misslyckas inte med byggandet, det lämnar bara det grammatiska fallet oöversatt vid körning.
  • Inget visuellt sammanhang som standard. Liksom de flesta resursfilformat, en.ts filen ger en översättare en sträng och dess omgivande kommentar, inte en bild av det renderade användargränssnittet, så layout-känslig text - menyalternativ, knappetiketter - riskerar avkortning utan ett separat sammanhangssteg.
  • Sammanställnings-och-skeppsdisciplin. Översatt .ts innehåll når bara användare efter att lrelease har kompilerat det till en binär .qm filen och applikationen laddar rätt språk - ett team som glömmer båda stegen skickar en build som ser helt översatt ut i Linguist men visar engelska vid körning.

Hur ser ett pålitligt Qt-lokaliseringsarbetsflöde ut?

  • Källinstrumentering - markera varje användarsynlig sträng med tr (), qStr () eller det matchande _NOOP -makrot så att lupdate kan hitta det, och lägg till Q_ OBJECT (eller Q_DECLARE_TR_FUNCTIONS för en icke-QObject klass) så att Q t Linguist har ett verkligt översättningskontext att gruppera strängar under.
  • Extraktion - kör lupdate mot C ++- och QML-källan, direkt eller genom CMakes qt_add_translation, för att generera eller uppdatera en .ts fil per målspråk samtidigt som översättningar som redan finns bevaras.
  • Översättning - öppna .ts arkivera i Qt Linguist för intern granskning, eller dirigera den genom ett översättningshanteringssystem som Smartling, som analyserar.ts inbyggt under en dedikerad q t- filtyp och håller numrerade %1/% 2 platshållare och numerus/numerusform plural poster låsta som strukturerad data snarare än redigerbar text.
  • Kompilering - kör lrelease för att kompilera varje översatt .ts fil till en binär .qm fil; detta är ett obligatoriskt byggsteg, inte valfri förpackning.
  • Runtime loading - installera matchande .qm fila via QTranslator i C++ eller QQMLApplicationEngines automatiska laddning i QML, och hantera hän delsen qEvent: :LanguageChange om programmet behöver byta språk utan att starta om.

Qt Linguist filhantering: tekniska specifikationer

ItemDetalj
Filtillägg.ts (översättningskälla, XML-baserad); kompilerar till binären.qm formatera applikationsladdningarna
Smartling-filtypsidentifierareqt
Maximal filstorlek (Smartling)10MB
Stöd för pluralformNative — Smartling läser attributet numerus= " ja " och numerusformelementen Qt Linguist skriver
PlatshållarformatQT-alternativet under direktivet placeholder_format, tillsammans med NONE, C, IOS, PYTHON, JAVA, YAML och RESX - skyddar Qts numrerade %1/%2 parametrar
Direktiv för språkformatsmartling.qt_lokalisering_stil (t.ex. =posix) ställer in formatet för utdata när källspråket inte kan identifieras automatiskt
Hantering av oöversatta strängar (Fil-API)includeOriginalStrings=False returnerar en tom sträng istället för den engelska källan när ingen översättning finns

Källa: Smartling Help Center - QT Linguist, och Smartling Help Center - Plurals. Verifierad 17 september 2026.

Vilka är de konkreta stegen för att lokalisera en Qt-applikation?

  1. Instrumentera källan - linda in varje användarsynlig sträng i tr (), qStr () eller ett _NOOP-makro, och lägg till Q_OBJECT (eller Q_DECLARE_TR_FUNCTIONS) till en klass som behöver sitt eget översättningskontext.
  2. Generera.ts filer med lupdate - kör lupdate, direkt eller via CMakes qt_add_translation, för att producera en.ts fil per målspråk och kör den igen varje gång källsträngar ändras så att översättningsdriften inte byggs upp.
  3. Översätt .ts-filen - arbeta i Qt Linguist för en enda intern översättare, eller ladda upp filen till en TMS som Smartling, som analyserar den under qt-filtypen och håller platshållare och pluralposter i %1-stil låsta som strukturerade data.
  4. Kompilera med lrelease - konvertera varje översatt .ts fil till dess binär.qm motsvarighet som en del av byggandet; det här steget är vad som faktiskt gör en översättning tillgänglig för det program som körs.
  5. Ladda och testa vid kör ning - installera matchande .qm arkivera genom QTranslator eller QQMLApplicationEngines automatiska laddning och verifiera pluralformer och %1/%2 parameterordning som återges korrekt på ett språk med annan ordordning än engelska.

Detta tillvägagångssätt passar team som...

  • Skicka en Qt/C++ eller Qt Quick (QML) stationär, inbäddad eller mobilapplikation som redan markerar strängar med tr () eller qStr ().
  • Behöver Qts %n pluralsyntax och numerus/numerusform-struktur översatt korrekt över ett målspråks fullständiga uppsättning CLDR-pluralkategorier, inte bara en enda form.
  • Vill ha .ts filer som dirigeras genom samma översättningsminne och ordlista som redan används för andra format - JSON, XLIFF, RESX - istället för ett separat arbetsflöde som bara är skrivbordet.
  • Släpp på en kadens där omkörning av lupdate och omöversättning av ändrade strängar måste vara ett repeterbart rörledningssteg, inte en engångsexport.

När ett dedikerat Qt-lokaliseringsarbetsflöde kanske inte är rätt prioritet

  • En prototyp eller internt verktyg utan planerat andraspråk — Qt Linguists manuella arbetsflöde räcker tills lokaliseringen faktiskt startar.
  • En enda ytterligare språk översatt en gång av en intern tvåspråkig utvecklare, utan pågående strängändringar att spåra.
  • Projekt där det mesta användarvänt innehåll lever utanför Qts tr () -system helt och hållet - serverrenderat webbinnehåll eller ett separat CMS hör hemma i ett webb- eller CMS-lokaliseringsarbetsflöde, inte ett Qt Linguist.

Utvärderingschecklista: frågor att ställa innan du bygger detta

Är dina översättningsbara strängar redan inslagna i tr (), qStr () eller ett _NOOP-makro?
Om inte, lupdate kan inte hitta dem - instrumentering av källan måste ske innan något översättningsverktyg tillför värde.

Använder din applikation Qts %n pluralsyntax någonstans?
Om ja, bekräfta att din översättningsplattform automatiskt mappar numerus= " ja " /numerusform-poster till fullständiga CLDR-pluralkategorier i stället för att behandla dem som vanlig text.

Hur många målspråk och hur ofta ändras källtexten?
En handfull statiska språk är bekväma bara i Qt Linguist; frekventa källändringar över många språk är där ett TMS översättningsminne och en repeterbar lupdate-translate-lrelease pipeline börjar löna sig.

Analyserar din plattform .ts inbyggt, eller kräver det konvertering till ett annat format först?
Inbyggd parsning under en dedikerad filtyp undviker ett konverteringssteg som en generisk XML-extraherare annars skulle lägga till.

Behöver översättare visuellt sammanhang för att undvika trunkerade knappar eller menyalternativ?
Sedan .ts har ingen renderad förhandsgranskning som standard, bekräfta hur kontext tillhandahålls innan strängar skickas otestade.

Hur hanterar Smartling Qt Linguist lokalisering?

Smartling tolkar Qt Linguist .ts filer som en dedikerad filtyp - identifierad internt som qt - snarare än att dirigera dem genom sin generiska XML-parser, vilket är viktigt eftersom Qts pluralstruktur och platshållarsyntax sedan identifieras automatiskt istället för att behöva translate_paths-style-direktiven som en anpassad XML-fil skulle kräva. Smartling stöder naturligt pluralformerna av QT Linguist-filer, läser attributet numerus= " yes " och numerusformelementen Qt Linguist skriver och mappar dem till rätt CLDR-pluralkategorier för varje målspråk. Qts numrerade %1/%2-parametrar är skyddade under Smartlings QT-platshållarformatalternativ, tillgängligt via platshållar_formatdirektivet tillsammans med format för iOS-, Java-, Python- och RESX-stilprojekt, så en översättare som arbetar i Smartlings CAT-verktyg kan inte av misstag skriva om eller ordna om en token som programmet körs beror på. Team som hanterar oöversatta strängar via Files-API:et kan ställa in includeOriginalStrings=False för att returnera en tom sträng istället för den engelska källan när en översättning ännu inte är tillgänglig. Filer laddas upp till en gräns på 10 MB, antingen manuellt eller via Smartlings API, och de vanliga XML-reserverade tecknen undviks som standard i levererade översättningar, med ett entity_escaping-direktiv tillgängligt där ett projekt behöver annan hantering.

Är du redo att se Smartling i aktion?

Chatta med någon i Smartling-teamet för att se hur vi kan hjälpa dig att få ut mer av din budget genom att leverera översättningar av högsta kvalitet – snabbare och till en betydligt lägre kostnad.