[script nvda] Re: traduction des F-String

  • From: "cyrille.bougot2" <dmarc-noreply@xxxxxxxxxxxxx> ("cyrille.bougot2")
  • To: "'script NVDA'" <scriptnvda@xxxxxxxxxxxxx>
  • Date: Fri, 22 Apr 2022 21:34:23 +0200

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 


PNG image

Other related posts: