Salut Yannick
L’usage dans le code de NVDA et ses extensions est d’utiliser .format() :
Par exemple :
_("Mon nom est {nom}").format(nom=nom)
L’usage de l’opérateur % est aussi utilisé mais généralement dans du code plus
ancien. .format() est plus lourd mais plus performant.
A+
Cyrille
De : scriptnvda-bounce@xxxxxxxxxxxxx <scriptnvda-bounce@xxxxxxxxxxxxx> De la
part de yannick
Envoyé : vendredi 22 avril 2022 20:14
À : scriptnvda@xxxxxxxxxxxxx
Objet : [script nvda] Re: traduction des F-String
coucou Patrick, merci !
finalement je vais utilisé l'opérateur de formatage !
Le 22/04/2022 à 19:10, Patrick ZAJDA a écrit :
Re bonjour,
De ce que j'ai pu lire sur ce poste (en anglais)
<https://stackoverflow.com/questions/49797658/how-to-use-gettext-with-python-3-6-f-strings>
, c'est normal.
Une méthode, pas recommandé mais qui devrait fonctionner qui est proposée en
commentaire :
from copy import copy
from inspect import currentframe
def f(s):
frame = currentframe().f_back
kwargs = copy(frame.f_globals)
kwargs.update(frame.f_locals)
return eval(s.format(**kwargs))
f(_('Hey, {username}'))
Patrick
Le 22/04/2022 à 18:33, yannick a écrit :
rebonjour, je viens de me rendre compte que les f-strings ne sont pas pris en
compte par NVDA !
les notations _(" ne posent aucun problème à poedit, mais dans les fichiers py
des modules, nvda ne les reconnait pas comme termes à traduire!
Certes je pourrais utilisé la méthode format qui alourdirait le code ou je
pourrais utiliser l'ancienne méthode avec l'opérateur modulo (%), mais bon la
méthode la plus recommandée reste les f string!
avez vous une idée ?
merci !
--
Patrick ZAJDA