Nach mehreren Wochen von On-und-off Forschung, ich habe noch nicht eine gründliche Anleitung, wie man gefunden Übersetzung/Lokalisierung in QtQuick durchzuführen (wie in die QML-Sprache, nicht C++ oder Python).Lokalisierung in QtQuick von oben nach unten
Im Allgemeinen frage ich, was sind die Schritte, um ein Projekt so viel in QtQuick wie möglich zu lokalisieren, mit minimal oder vorzugsweise ohne C++.
Genauer gesagt, gibt es eine gute Anzahl von Löchern, die ich in meinem Verständnis davon füllen muss, wie QtQuick Lokalisierung handhabt.
Bisher habe ich:
Appended QT_TR_NOOP(), um alle meine übersetzbaren Strings für die Übersetzung zur Laufzeit
hinzugefügt meine Datei alle Strings in meine .pro-Datei mit lupdate_only mit {QUELLEN + = LanguageStrings.qml}
Badische Dateien mit QtLinguist
jedoch beabsichtige ich, für die dynamische Änderung der Sprache eine Option zu implementieren, und das einzige Beispiel, das ich in Bezug auf Übersetzung gesehen habe, die nicht vollständig in C++ war im Wesentlichen eine Instanz des Projekts für jede Sprache erstellt, anstatt die Saiten zu ändern zur Laufzeit. So
, wie ändere ich die Sprache zur Laufzeit? Gibt es eine Variable, die ich einstellen kann? Wird es aus dem Systemgebietsschema gezogen? Ich habe dazu keine solide Antwort gefunden.
Irgendwelche Ideen?
Danke! Das sieht so aus, wie ich es brauche, und Ihre C++ - Implementierung sieht viel sauberer aus als die im Wiki, die leider nicht auf der neuesten Version von QtQuick2 funktioniert. Dass gesagt wird, wie würden Sie empfehlen ich „... die oben basierend auf Benutzereingaben von QML auslösen zur Laufzeit“? Was wäre der Code dafür? – NGXII
Schauen Sie sich den Link an. Es enthält den QML- und den C++ - Code, aber auch eine Projektdatei und die notwendigen Schritte, um alles zusammen zu bündeln. Die allgemeine Idee ist, ein Objekt von C++ über setContextProperty in QML zu exportieren. Das Objekt ist dann unter dem angegebenen Namen in QML verfügbar. Der Rest ist wirklich einfach. Im Beispiel haben sie drei Buttons und innerhalb des onClicked-Slots rufen Sie einfach eine Funktion dieses Objekts auf. Vergessen Sie nicht, vor der Funktion, die Sie von QML aufrufen möchten, das Makro Q_INVOKABLE hinzuzufügen (http: //doc.qt.io/qt-5/qtqml-cppintegration-exposedcppattributes.html). –