Hi Guilherme,
well, maybe I should have explained what I'm trying to do in the original email. Fixing this mistake now.
I have a tool called Wikinity https://tools.wmflabs.org/wikinity. The tool takes data from Wikidata and displays items with no image uploaded. It became to be used by Czech Commons users in the preparation step for their photo trip. The source https://phabricator.wikimedia.org/source/tool-wikinity/ is awful, to say the most important parts from how its written:
- Frontend is in public/*.php. Those files used to be HTML files while the tool was in one language only. I switched them to PHP only to be able to use Intuition. - Backend logic is in public/*.py. for the main purpose of tool, public/map.py is important, which selects appropriate Wikidata query (stored in queries/*.txt) based on GET parameters and creates a map. - JavaScript just displays the map generated by map.py. - Other files are used for other things like storing queries.
Yeah, I know its awful (but working :D). I plan to rewrite it. As I already use Translatewiki, which generates locales https://phabricator.wikimedia.org/source/tool-wikinity/browse/master/messages/ in certain format, I want to keep it. The fornat is straightforward to me and not like gettext which I managed to understood, but I think this is more clear. Of course, you might not agree, that's my current point of view.
My plan is to convert this into a simple Flask app, which should incorporate several backend CGI scripts written in Python into one file with much more clear structure. This Flask app should ofc do the same things like the current tool does. I know how to do everything from the function side. The only one thing I'm thinking about is the localization - more certainly, what way I should use to use locales in this format https://phabricator.wikimedia.org/source/tool-wikinity/browse/master/messages/cs.json in a Flask app (more precisely, in its Jinja2 templates, I do not have anything to localize in the Python part).
BTW, I tried to use Flask-Babel and I manged to have working localization https://tools.wmflabs.org/commons-mass-description. The only one thing I don't like is that it uses gettext, which I don't like and its not like "modify this json file and the locales will change automatically", but "modify this .po file, then compile it it and maybe it will work".
Martin
út 18. 9. 2018 v 19:10 odesílatel Guilherme Gonçalves < guilherme.p.gonc@gmail.com> napsal:
Hi Martin,
I know of a few approaches, depending on the complexity of your tool:
- You can get pretty far with having your strings in, say, JSON files
that you load and format yourself in code based on placeholders.
- The Python standard library has a built-in gettext
https://docs.python.org/2.7/library/gettext.html module if you prefer a more standard format.
- For a more comprehensive solution that adds date formatting, I heard
good things about Flask-Babel https://pythonhosted.org/Flask-Babel/, but never used it myself.
Whichever way you choose, I'd definitely recommend managing the translations through TranslateWiki https://translatewiki.net/, which you might already know about.
Em ter, 18 de set de 2018 às 15:14, Martin Urbanec < martin.urbanec@wikimedia.cz> escreveu:
Hi,
I'm sometimes use Flask for my Toolforge tools. I'd like to localize them, ideally with messages directory in similar format like MediaWiki has in i18n directory.
I know about Intuition for PHP, does anybody know about similar thing for Flask application?
Best, Martin _______________________________________________ Wikimedia Cloud Services mailing list Cloud@lists.wikimedia.org (formerly labs-l@lists.wikimedia.org) https://lists.wikimedia.org/mailman/listinfo/cloud
-- Guilherme P. Gonçalves _______________________________________________ Wikimedia Cloud Services mailing list Cloud@lists.wikimedia.org (formerly labs-l@lists.wikimedia.org) https://lists.wikimedia.org/mailman/listinfo/cloud