Documentation Frappe Framework

Frappe Framework

Traductions dans une app personnalisée

Frappe lit les CSV du dossier translations selon la langue de l’utilisateur. Sans traduction, la chaîne source reste affichée.

1 min de lectureMis à jour le Source : docs.frappe.io

Dossier

À la racine du paquet, pas dans un sous-module : apps/your-app/your-app/translations/. Frappe le détecte sans autre réglage. Les commandes de fichiers PO sont dans bench generate-pot-file.

Fichiers CSV

Un fichier par langue, nommé avec le code Frappe, par exemple ar.csv ou es.csv. Les codes sont dans Frappe, Language settings. Trois colonnes : chaîne source, traduction, contexte. La troisième peut rester vide.

code
"source_string","translated_string","context"
"continue","إستكمال",""

La source est la chaîne passée à _(), par exemple _("continue").

Dans le code

En Python, HTML ou JavaScript, entourez la chaîne de _(). À l’exécution, Frappe la remplace selon la langue de l’utilisateur. Pour un mot à plusieurs sens, le contexte distingue :

python
_("charge", context="mobile phone charge")
_("charge", context="invoice line")

Sans contexte, la source dit qu’on ne sait pas quel sens choisir. Les deux lignes CSV de « charge » portent alors un contexte différent : recharge de téléphone, ou ligne de facture.

Build, cache, repli

La section « faut-il builder ou migrer » répond non : Frappe charge translations/lang.csv à l’exécution selon la langue connectée. Un rafraîchissement ou bench --site my-site clear-cache suffit si rien ne change. bench build n’est nécessaire que si le JavaScript d’interface utilise __() et que ces fichiers ont changé.

Une note plus haut dit que les traductions sont mises en cache pendant le build, et qu’il faut toujours redémarrer bench après une modification des fichiers. Les deux consignes figurent dans la page.

Sans traduction, la chaîne source est affichée.

Point d’attention

Le nom du CSV doit être le code de langue, à la racine du paquet. Le contexte du code doit être celui de la colonne, sinon les deux sens de « charge » ne se séparent pas.

Traductions CSV d’une application Frappe | ERPNext Lab