Strings in QObjects werden zur Laufzeit übersetzt. Wenn der Übersetzer geändert wird, werden alle diese Zeichenfolgen aktualisiert. Allerdings werden auf Modulebene deklarierte Zeichenfolgen oder sogar statische Klassenattribute zum Zeitpunkt des Imports übersetzt.
Ich sehe drei Möglichkeiten, die Übersetzung von Modulzeichenfolgen zu ermöglichen, von denen mir keine völlig zufriedenstellend erscheint:
Importieren Sie das Modul, nachdem der Übersetzer installiert ist (siehe hier (Absatz Übersetzer frühzeitig installieren)). Dies ist möglicherweise nicht praktisch, aber machbar, solange die Sprache zur Laufzeit nicht geändert werden muss.
Machen Sie die Strings zu Klasseninstanzattributen. Nun ja, natürlich. Aber das macht das Design kaputt.
Behalten Sie die Zeichenfolgen auf Modulebene. Verwenden Sie QtCore.QCoreApplication.translate(), damit sie von pylupdate übernommen werden. Übersetzen Sie sie dann (erneut) zur Laufzeit, indem Sie self.tr() oder QtCore.QCoreApplication.translate() für sie aufrufen. Beispiel:
translate = QtCore.QCoreApplication.translate
strings = [translate('foo'), translate('bar')]
class my_class(QObject):
def __init__(self):
for s in strings:
print(self.tr(s))
Dabei muss sichergestellt werden, dass vor dem Modulimport kein Übersetzer installiert wird, andernfalls werden die Modulzeichenfolgen zum Zeitpunkt des Imports übersetzt (translate() in der Deklaration) und zur Laufzeit erneut übersetzt (self.tr() in der Klasseninstanz). Im allgemeinen Fall wird dies nicht sichtbar sein: self.tr() wird versuchen, eine bereits übersetzte Zeichenfolge zu übersetzen, die wahrscheinlich nicht im ursprünglichen Sprachzeichenfolgensatz vorhanden ist, und die Zeichenfolge selbst stillschweigend zurückgeben.
Aber wenn beispielsweise eine englische Zeichenfolge in eine französische Zeichenfolge übersetzt wird, die einer anderen englischen Zeichenfolge in derselben Klasse entspricht, wird stattdessen die französische Übersetzung dieser Zeichenfolge angezeigt.
Strings in QObjects werden zur Laufzeit übersetzt. Wenn der Übersetzer geändert wird, werden alle diese Zeichenfolgen aktualisiert. Allerdings werden auf Modulebene deklarierte Zeichenfolgen oder sogar statische Klassenattribute zum Zeitpunkt des Imports übersetzt.
Ich sehe drei Möglichkeiten, die Übersetzung von Modulzeichenfolgen zu ermöglichen, von denen mir keine völlig zufriedenstellend erscheint:
[list] [*]Importieren Sie das Modul, nachdem der Übersetzer installiert ist (siehe hier (Absatz Übersetzer frühzeitig installieren)). Dies ist möglicherweise nicht praktisch, aber machbar, solange die Sprache zur Laufzeit nicht geändert werden muss. [*]Machen Sie die Strings zu Klasseninstanzattributen. Nun ja, natürlich. Aber das macht das Design kaputt. [*]Behalten Sie die Zeichenfolgen auf Modulebene. Verwenden Sie QtCore.QCoreApplication.translate(), damit sie von pylupdate übernommen werden. Übersetzen Sie sie dann (erneut) zur Laufzeit, indem Sie self.tr() oder QtCore.QCoreApplication.translate() für sie aufrufen. Beispiel:
def __init__(self): for s in strings: print(self.tr(s)) [/code]
Dabei muss sichergestellt werden, dass vor dem Modulimport kein Übersetzer installiert wird, andernfalls werden die Modulzeichenfolgen zum Zeitpunkt des Imports übersetzt (translate() in der Deklaration) und zur Laufzeit erneut übersetzt (self.tr() in der Klasseninstanz). Im allgemeinen Fall wird dies nicht sichtbar sein: self.tr() wird versuchen, eine bereits übersetzte Zeichenfolge zu übersetzen, die wahrscheinlich nicht im ursprünglichen Sprachzeichenfolgensatz vorhanden ist, und die Zeichenfolge selbst stillschweigend zurückgeben.
Aber wenn beispielsweise eine englische Zeichenfolge in eine französische Zeichenfolge übersetzt wird, die einer anderen englischen Zeichenfolge in derselben Klasse entspricht, wird stattdessen die französische Übersetzung dieser Zeichenfolge angezeigt. [/list]
Gibt es eine Möglichkeit, einen Enum-Satz von Konstanten zu definieren, indem die Daten aus einer Skriptdatei (vielleicht einer XML- oder einer JSON-Datei) geladen und analysiert werden?
Ich habe einen tiefen Lernmodus, den ich in der JIT -transformierten Weise durch:
verwandeltemy_function_checked = checkify.checkify(model.apply)
model_jitted = jax.jit(my_function_checked)
err,...
Ich habe einen tiefen Lernmodus, den ich in der JIT -transformierten Weise durch:
verwandeltemy_function_checked = checkify.checkify(model.apply)
model_jitted = jax.jit(my_function_checked)
err,...