Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Traduire l'interface contributeur #1929

Open
raphodn opened this issue Feb 1, 2023 · 8 comments · Fixed by #1935, #1937, #1938, #1941 or #1942
Open

Traduire l'interface contributeur #1929

raphodn opened this issue Feb 1, 2023 · 8 comments · Fixed by #1935, #1937, #1938, #1941 or #1942
Assignees

Comments

@raphodn
Copy link
Member

raphodn commented Feb 1, 2023

Quoi ?

  • ajouter des traductions
  • pouvoir changer de langue (Francais ou Anglais pour l'instant)

Pourquoi ?

Permettre à des anglophones d'accéder à l'interface et contribuer

Liens utiles

@dq18
Copy link
Collaborator

dq18 commented Feb 9, 2023

Comment ?

Questions

  • Pour les translation keys, quelle convention prenons nous? Constant string ou variable (e.g. "titre de page home" ou TitreHome)
  • Quelle langue pour ces translation keys? anglais ou français
  • Si tu as fait un projet avec internationalisation avant, quel outil pour partager aux traducteurs (editer les .po)?

@raphodn
Copy link
Member Author

raphodn commented Feb 9, 2023

Merci d'avoir regardé Didier !

Je n'ai pas beaucoup d'expérience en la matière, mais idéalement avoir des msgid qui soient explicites et en anglais comme ca la traduction EN est faite par défaut ?

En terme d'outillage je ne sais pas trop, est-ce que remplir le fichier .po suffit ? j'espère :)

@dq18 dq18 self-assigned this Feb 12, 2023
@dq18 dq18 linked a pull request Feb 12, 2023 that will close this issue
@dq18
Copy link
Collaborator

dq18 commented Feb 12, 2023

J'ai fait un premier jet. Je n'aurai pas le temps de faire plus d'ici mercredi 15.

Détail:

  • Ajout des langues /en et /fr
  • dropdown dans le footer pour switcher de langue
  • Quelques html de traduits
  • Ajout de rosetta pour directement ajouter en enregistrer les traductions dans les po (et pas besoin du logiciel poedit) accessible à /rosetta (pas sûr de comment ça marche en production)

A faire:

  • redirection /fr sur la page normale (peut-être pas besoin si on passe en .org)
  • Continuer la traduction des html et des .py

@raphodn
Copy link
Member Author

raphodn commented Feb 14, 2023

Salut Didier ! merci :)

Je vais prendre la main sur la PR pour rajouter 1 ou 2 commits et merger rapidement :)

Je vais sûrement enlever Rosetta. Même si c'est lié à cette issue, je pense que ca devrait être dans une PR séparée, histoire de comprendre l'utilité et les limites (on s'en servira très certainement ! juste séparer les concerns)

  • si on fait de la traduction via l'interface de production, comment mettre à jour ensuite nos fichier .po dans le code ?
  • pourquoi Anglais est indiqué comme étant traduit à 8% alors que c'est la langue pivot ?
  • par défaut seul les admin peuvent accéder à /rosetta , comment élargir ?

@dq18
Copy link
Collaborator

dq18 commented Feb 14, 2023

Ok pour Rosetta. Je voulais juste pouvoir montrer en démo comment traduire.
Pour traduction, plusieurs possibilités:

  • Ajout direct dans les po
  • Avec un outil comme poedit ou rosetta
    Puis git commit.

Une fois déployé, je ne sais pas si les po sont accessible/editable sur le serveur. A voir si faisable par Rosetta ou autre.

Les msgid sont en anglais. Il y a un po pour l'anglais pas pour la traduction mais pour la correction. On peut facilement arriver à 100% juste en copiant chaque msgid pour msgtxt

@raphodn raphodn reopened this Feb 14, 2023
@raphodn raphodn linked a pull request Feb 15, 2023 that will close this issue
raphodn added a commit that referenced this issue Feb 15, 2023
@raphodn raphodn moved this to In Progress in Quiz 2022 Feb 15, 2023
@raphodn
Copy link
Member Author

raphodn commented Feb 16, 2023

gettext() vs. gettext_lazy()

  • In definitions like forms or models you should use gettext_lazy because the code of this definitions is only executed once (mostly on django's startup)
  • In views and similar function calls you can use gettext without problems, because everytime the view is called gettext will be newly executed

https://stackoverflow.com/a/4164683

@raphodn
Copy link
Member Author

raphodn commented Feb 23, 2023

Ce qu'il reste à faire :

@dq18
Copy link
Collaborator

dq18 commented Mar 27, 2023

Concernant "sélecteur de langue : mémoriser la sélection de l'utilisateur ? avoir un réglage dans ses settings ?"

La PR est
Plus possible d'ajouter des PRs dans cette issue :)

J'ai passé beaucoup de temps pour comprendre comment ça marchait, j'ai créé un custom middleware et mis à jour les views. Mais au final après pas mal de recherche, j'ai compris que Django faisait déjà tout automatiquement... set_language s'occupe de créer la variable pour la session et le cookie par défaut. SessionMiddleware va chercher la variable session et LocaleMiddleware va chercher le cookie.

Edit: il y a un souci avec le test, mais pas l'impression que ça vienne de ça

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment