Je voudrais déterminer, s'il y a une traduction à la langue actuelle pour une chaîne donnée. J'aimerais écrire quelque chose comme: Je n'ai rien trouvé approprié. La fonction merci. p> p> ugetText code> renvoie simplement la traduction ou la chaîne d'origine (si la traduction n'est pas disponible) mais sans aucune option pour déterminer si la traduction est là ou n'est pas. p>
4 Réponses :
Depuis, comme vous le dites, ugetText retournera la chaîne d'origine si aucune traduction n'est disponible, vous ne pouvez pas comparer la valeur renvoyée avec l'original pour voir si elles sont identiques? P>
Merci pour la réponse, mais ce n'est pas ce que je cherchais. Dans certaines langues, certaines chaînes peuvent être traduites comme des chaînes anglaise intentionnellement, tandis que dans d'autres langues, qui ont tendance à tout traduire, la traduction existe. Donc, cela donnerait un faux avertissement. Je voudrais détecter si la traduction est manquante.
def translation_available(msg): return ugettext(msg) == msg
Merci pour la réponse, mais comme je l'ai écrit ci-dessus: si je traduit la chaîne comme anglais intentionnellement, cela donnera un faux avertissement.
Cela repose trop lourdement sur les coïncidences.
Vous pouvez utiliser Polib pour cela: https://bitbucket.org/izi/polib/wiki / Home
quelque chose sur ces lignes (non testées) de code: p> Cela donnera true quand une traduction active em> est disponible. "E.Translated ()" seul retourne vrai pour les phrases à la fois floues et / ou obsolètes. p> p>
pour e in po.translated_tries () code> ... serait plus efficace peut-être?
Cela ne retournera-t-il pas vrai pour une entrée de correspondance qui n'est pas traduite?
Pour quiconque cherche une solution hacky:
Vous pouvez corriger la méthode GetText de NullTranslationCatalog, je crois. Une fois que vous avez atteint ce catalogue, cela signifie que vous avez contourné toutes les traductions. Vous pouvez donc enregistrer votre avertissement juste là. Probablement préférable de soumettre un patch à django :)
Il est plus efficace que la réponse acceptée à coup sûr (aussi, je suppose que si vous utilisez le mofile au lieu du pofile, ce serait plus efficace).