phyver / GameShell

a game to learn (or teach) how to use standard commands in a Unix shell
GNU General Public License v3.0
2.17k stars 138 forks source link

Internationalisation #11

Closed gagalago closed 3 years ago

gagalago commented 3 years ago

Avez-vous déjà pensé à traduire ce jeu? Êtes-vous ouvert a ce genre de fonctionnalités? Si oui, comment le l'envisageriez-vous?

phyver commented 3 years ago

J'y ai pensé ... mais ne l'ai jamais fait.

Il y a 2 choses :

Je vais réfléchir un peu plus, mais s'il y a des gens intéressés, je peux probablement implémenter le second point. (Libre à chacun d'internationaliser les missions par la suite...)

rlepigre commented 3 years ago

En plus ça n'a pas l'air trop compliqué: https://www.linuxjournal.com/content/internationalizing-those-bash-scripts. Tu connaissais déjà les commandes msgfmt et gettext? J'en n'avais jamais entendu parler!

phyver commented 3 years ago

Je connaissais, mais ne l'ai jamais utilisé.

Pour les missions, c'est probablement plus simple de les réécrire complètement.

Pour les sources de GameShell, c'est par là que je commencerais, mais ça fait une dépendance supplémentaire. (Je ne sais pas si gettext est installé par défaut.)

rlepigre commented 3 years ago

Je ne pense pas qu'il soit installé par défaut, mais il doit être assez commun car il est installé sur toutes les machines auxquelles j'ai accès (Debian et Archlinux). Et a priori il peut aussi être installé avec brew sur MacOS.

Pour les missions l'idéal serait que chaque dossier de mission ait un sous-dossier locale avec des fichiers .po pour chaque langue supportée, et que GameShell s'occupe de faire ce qu'il faut pour les utiliser au lancement des missions. Comme ça ce serait vraiment facile pour d'autres personnes de s'occuper de la traduction.

Par contre je ne sais pas ce qui se passe si tu définis deux messages avec la même clé, donc il faut faire attention que les messages des missions n'aient pas la même clé qu'un message de GameShell.

phyver commented 3 years ago

Ouch! Je viens de passer quelques heures à essayer de faire des tutoriels sur gettext, et c'est plus compliqué que ce que je pensais.

J'ai pu faire un "hello world", mais ça n'a pas été facile. Je pense voir un peu ce que je pourrais faire dans GameShell, mais j'ai du mal à estimer la robustesse de tout ça. Si on suppose que gettext est installé, et que le système a une locale UTF-8 fr_FR, en_US (ou en_GB), ça devrait passer.

Je ferais peut-être une branche pour essayer tout ça.

rlepigre commented 3 years ago

OK cool. Je veux bien aider si besoin.

phyver commented 3 years ago

Je regarde !

rlepigre commented 3 years ago

Solved by #22.