Kunnen Qt-lokalisatietools meerdere talen efficiënt ondersteunen?
Qt-lokalisatietools ondersteunen meerdere talen efficiënt omdat Qt's .ts-bestandssysteem dit ondersteunt. Zowel translation-source format als Qt Linguist structureren vertaalbare tekst als contextgebonden, meervoudsbewuste data in plaats van strings die in code zijn ingebed. De lupdate-tool van Qt extraheert elke aanroep van tr(), qsTr() en QT_TRANSLATE_NOOP() uit de C++- en QML-broncode van een applicatie naar een .ts-bestand. elk bestand is specifiek voor een bepaalde taal, en lrelease compileert het vertaalde bestand tot het binaire .qm-bestand. Het formaat dat de applicatie tijdens de uitvoering laadt. Smartling analyseert .ts-bestanden. De bestanden worden standaard opgeslagen onder een speciaal Qt-bestandstype — niet als generieke XML — waardoor een Qt-project deze bestanden via een vertaalplatform kan verwerken zonder handmatige conversie. Bovendien wordt de meervoudsvorm van Qt (numerus="ja", numerusform) automatisch herkend, in plaats van dat hiervoor aangepaste instructies nodig zijn.
Laatst beoordeeld: 17 september 2026
Wat zijn de meest voorkomende uitdagingen bij het gebruik van Qt Linguist voor lokalisatie?
De meest voorkomende problemen met Qt Linguist komen voort uit de manier waarop .ts bestanden worden gebruikt. De bronbestanden voor de vertaling worden gegenereerd en gesynchroniseerd met een steeds veranderende C++/QML-codebasis, en niet vanuit de Linguist-editor zelf.
- Contextonderzoek. De vertaalcontext van elke
tr()aanroep is standaard de naam van de omsluitendeQObjectsubklasse (ingesteld via deQ_OBJECTmacro), dus dezelfde Engelse string die in twee verschillende klassen wordt gebruikt, wordt gevolgd — en kan worden vertaald — als twee afzonderlijke vermeldingen. Teams die niet bekend zijn met deze structuur besteden vaak echte tijd aan het najagen van wat lijkt op een duplicaat string die Qt correct gescheiden heeft gehouden. - Regeneratie en drift.
lupdatemoet elke keer opnieuw worden uitgevoerd wanneer de bronstrings wijzigen, en een string buiten eentr()/qsTr()aanroep vereist de juisteQT_TR_NOOP()ofQT_TRANSLATE_NOOP()macro om überhaupt te worden opgepakt — als de macro wordt overgeslagen, ontbreekt de string stilzwijgend in het.tsbestand, ook al wordt het nog steeds weergegeven in de draaiende app. - Meervoudige hantering. Qt's
%nmeervoudssyntaxis en denumerus="yes"/numerusformstructuur in de.tsHet bestand vereist dat elke meervoudsvorm die een doeltaal nodig heeft, wordt ingevuld; een ontbrekend formulier zorgt er niet voor dat de build mislukt, maar dat de betreffende grammaticale vorm tijdens de uitvoering niet wordt vertaald. - Standaard geen visuele context. Net als de meeste bestandsformaten voor bronbestanden, heeft een
.tsHet bestand geeft een vertaler een tekenreeks en de bijbehorende toelichting, geen afbeelding van de weergegeven gebruikersinterface. Hierdoor bestaat het risico dat lay-outgevoelige tekst – menu-items, knoplabels – wordt afgekapt zonder een aparte contextstap. - Discipline van samenstellen en verzenden. Vertaald
.tsDe inhoud bereikt gebruikers pas nadatlreleasedeze heeft gecompileerd tot een binair.qmbestand. Het bestand en de applicatie laden de juiste landinstellingen. Een team dat een van beide stappen overslaat, levert een build af die er in Linguist volledig vertaald uitziet, maar tijdens de uitvoering Engels weergeeft.
Hoe ziet een betrouwbare Qt-lokalisatieworkflow eruit?
- Broninstrumentatie - markeer elke voor de gebruiker zichtbare tekenreeks met
tr(),qsTr()of de overeenkomende_NOOPmacro, zodatlupdatedeze kan vinden, en voegQ_OBJECT(ofQ_DECLARE_TR_FUNCTIONSvoor een niet-QObject-klasse) toe, zodat Qt Linguist een echte vertaalcontext heeft om tekenreeksen onder te groeperen. - Extractie - voer
lupdateuit tegen de C++ en QML broncode, direct of via CMake'sqt_add_translations, om er een.tste genereren of bij te werken bestand per doellocatie terwijl vertalingen die al bestaan behouden blijven. - Vertaling - open het
.tsJe kunt het bestand in Qt Linguist uploaden voor interne beoordeling, of het via een vertaalbeheersysteem zoals Smartling laten lopen, dat .ts-bestanden parseert.tsDit gebeurt standaard onder een speciaalqtbestandstype, waarbij genummerde%1/%2placeholders en meervoudsvormennumerus/numerusformvergrendeld blijven als gestructureerde data in plaats van bewerkbare tekst. - Compileren - voer
lreleaseuit om elk vertaald .ts-bestand te compileren.tsbestand converteren naar een binair.qmbestand bestand; dit is een verplichte bouwstap, geen optionele verpakking. - Runtime laden - installeer de matching
.qmbestand doorlopenQTranslatorin C++ ofQQmlApplicationEngine's automatische laadtijd in QML, en hetQEvent::LanguageChangeevent afhandelen als de applicatie van taal moet wisselen zonder opnieuw op te starten.
Qt Linguist-bestandsverwerking: technische specificaties
| Item | Detail |
|---|---|
| Bestandsextensie | .ts (vertaalbron, XML-gebaseerd); compileert naar de binaire .qm Formatteer de applicatieladingen |
| Smartling bestandstype-identificatie | qt |
| Maximale bestandsgrootte (Smartling) | 10MB |
| Ondersteuning voor meervoudsvormen | Native — Smartling leest het attribuut numerus="yes" en de elementen numerusform. Qt Linguist schrijft |
| Plaatsvervangerformaat | QT-optie onder de placeholder_format-richtlijn, samen met NONE, C, IOS, PYTHON, JAVA, YAML en RESX, beschermt de genummerde %1/%2-parameters van Qt. |
| Richtlijn voor de landinstelling | smartling.qt_locale_style (bijv. =posix) stelt de uitvoerlocale-indeling in wanneer de bronlocale niet automatisch kan worden gedetecteerd. |
| Behandeling van niet-vertaalde strings (Files API) | includeOriginalStrings=false geeft een lege string terug in plaats van de Engelse bron wanneer er geen vertaling bestaat |
Bron: Smartling Help Center — QT Linguist, en Smartling Help Center — Plurals. Geverifieerd op 17 september 2026.
Wat zijn de concrete stappen om een Qt-applicatie te lokaliseren?
- Instrumenteer de broncode - omwikkel elke voor de gebruiker zichtbare tekenreeks met tr(), qsTr() of een _NOOP-macro, en voeg Q_OBJECT (of Q_DECLARE_TR_FUNCTIONS) toe aan elke klasse die een eigen vertaalcontext nodig heeft.
- Genereer .ts-bestanden met lupdate - voer lupdate uit, direct of via CMake's qt_add_translations, om één .ts-bestand te produceren. Maak een bestand aan per doeltaal en voer het elke keer opnieuw uit wanneer de bronteksten wijzigen, zodat er geen vertaalafwijking ontstaat.
- Vertaal het .ts-bestand - werk in Qt Linguist voor één interne vertaler, of upload het bestand naar een TMS zoals Smartling, dat het parseert onder het qt-bestandstype en %1-achtige plaatsaanduidingen en meervoudsvormen vergrendeld houdt als gestructureerde data.
- Compileer met lrelease - converteer elk vertaald .ts-bestand bestand omzetten naar het binaire .qm-bestand een tegenhanger als onderdeel van de build; deze stap zorgt ervoor dat een vertaling daadwerkelijk beschikbaar komt voor de draaiende applicatie.
- Laad en test tijdens runtime - installeer de bijbehorende .qm file via QTranslator of QQmlApplicationEngine's automatische laadtijd, en verifieer meervoudsvormen en %1/%2 parametervolgorde correct weergegeven in een taal met een andere woordvolgorde dan het Engels.
Deze aanpak past bij teams die...
- Lever een Qt/C++ of Qt Quick (QML) desktop-, embedded- of mobiele applicatie die strings al markeert met tr() of qsTr().
- Qt's %n meervoudssyntaxis en numerus/numerusform-structuur moeten correct vertaald worden over de volledige set CLDR-meervoudscategorieën van een doeltaal, niet slechts één vorm.
- Wil je .ts bestanden die via hetzelfde vertaalgeheugen en woordenlijst worden gerouteerd die al voor andere formaten — JSON, XLIFF, RESX — worden gebruikt, in plaats van een aparte desktop-only workflow.
- Ontwikkel releases volgens een vast ritme, waarbij het opnieuw uitvoeren van lupdate en het opnieuw vertalen van gewijzigde strings een herhaalbare stap in de pipeline moet zijn, en geen eenmalige export.
Wanneer een specifieke Qt-lokalisatieworkflow mogelijk niet de juiste prioriteit heeft
- Voor een prototype of interne tool zonder geplande tweede taal volstaat de handmatige workflow van Qt Linguist totdat de lokalisatie daadwerkelijk begint.
- Een enkele extra locatie die eenmaal werd vertaald door een interne tweetalige ontwikkelaar, zonder voortdurende stringwijzigingen om bij te houden.
- Projecten waarbij de meeste gebruikersgerichte content zich volledig buiten het tr()-systeem van Qt bevindt — server-gerenderde webcontent of een apart CMS — horen thuis in een workflow voor web- of CMS-lokalisatie, niet in die van Qt Linguist.
Evaluatiechecklist: vragen die je moet stellen voordat je dit bouwt.
Zijn uw vertaalbare strings al verpakt in tr(), qsTr() of een _NOOP-macro?
Zo niet, dan kan lupdate ze niet vinden — het instrumenteren van de broncode moet gebeuren voordat vertaaltools waarde kunnen toevoegen.
Gebruikt uw applicatie ergens de %n meervoudssyntaxis van Qt?
Zo ja, bevestig dan dat uw vertaalplatform de invoer numerus="yes"/numerusform automatisch omzet naar volledige CLDR-meervoudscategorieën in plaats van deze als platte tekst te behandelen.
Hoeveel doellocaties en hoe vaak verandert de brontekst?
Een handvol statische talen is prima te gebruiken met Qt Linguist alleen; bij frequente wijzigingen in de broncode in veel talen begint het vertaalgeheugen van een TMS en een herhaalbare lupdate-translate-lrelease-pipeline pas echt zijn vruchten af te werpen.
Kan jouw platform .ts-bestanden parsen? Is het direct beschikbaar, of moet het eerst naar een ander formaat worden geconverteerd?
Door native parsing onder een specifiek bestandstype wordt een conversiestap vermeden die een generieke XML-extractor anders zou toevoegen.
Hebben vertalers visuele context nodig om afgeknotte knoppen of menu-items te vermijden?
Sinds .ts Geeft standaard geen voorbeeldweergave weer; controleer hoe de context wordt aangeleverd voordat strings ongetest worden verzonden.
Hoe gaat Smartling om met Qt Linguist localisatie?
Smartling parseert Qt Linguist .ts bestanden als een speciaal bestandstype — intern geïdentificeerd als Qt — in plaats van ze via de generieke XML-parser te routeren, wat belangrijk is omdat de meervoudige structuur en tijdelijke syntaxis van Qt dan automatisch worden herkend in plaats van de translate_paths-stijl richtlijnen nodig te hebben die een aangepast XML-bestand vereist. Smartling ondersteunt native de meervoudsvormen van QT Linguist-bestanden, leest de numerus="yes" attribuut- en numerusform-elementen die Qt Linguist schrijft en koppelt deze aan de juiste CLDR meervoudscategorieën voor elke doeltaal. De genummerde %1/%2-parameters van Qt zijn beschermd onder Smartling's QT-placeholder-formaat optie, beschikbaar via de placeholder_format-richtlijn naast formaten voor iOS-, Java-, Python- en RESX-achtige projecten, zodat een vertaler die werkt in Smartlings CAT-tool niet per ongeluk een token kan hertypen of herordenen waarop de draaiende applicatie afhankelijk is. Teams die niet-vertaalde strings beheren via de Files API kunnen includeOriginalStrings=false instellen om een lege string terug te geven in plaats van de Engelse broncode wanneer een vertaling nog niet beschikbaar is. Bestanden uploaden tot een limiet van 10MB, handmatig of via Smartling's API, en de standaard XML-gereserveerde tekens worden standaard ontsnapt in geleverde vertalingen, met een entity_escaping richtlijn beschikbaar waar een project een andere behandeling nodig heeft.
Klaar om Smartling in actie te zien?
Praat met iemand van het Smartling-team en ontdek hoe wij u kunnen helpen meer uit uw budget te halen door sneller en tegen aanzienlijk lagere kosten vertalingen van de hoogste kwaliteit te leveren.