Hi again.
So, I explored the idea some more and now, I've decided on a basic architecture to follow for the project. As I see it, the project will constitute of three major components:
1. A UI for interfacing with the user. The UI will be, by the very nature of the project, quite simple - a file upload widget for accepting a standard csv/xlsx/OpenDocumentFormat spreadsheet(ods files). This part will, IMO, be relatively easy to develop.
2. A Python based processing backend to process the uploaded file, connect to the Google/Bing APIs, get the translated result, process it to generate an output file (we can allow the user to pick the output format). These operations will rely on third party python libraries (xlrd, xlwt, xlutils, odfpy/simple-odspy) to parse the data in spreadsheets and write to the output file. This component will be moderately time consuming, primarily because of the inclusion of the third party packages and the support for several file formats.
3. The third major component will be a link that connects the UI with the Python backend. This, in my opinion, will be relatively harder to develop among the all three components. Implementation strategy however, is straightforward. The two components will interact via interprocess communication (IPC). Now, if we would have been on linux, I wouldn't need to think twice about the IPC backend - we'd just use DBus. Unfortunately, we can't use DBus. Also, we can't use windows specific IPC libs either - since, as I understand, there's talk about porting the BuildmLearn toolkit to Linux (yay!). So, I explored this topic for a while and I've decided to go with
zeromq. There are a few more things about zeromq that I'll about in the proposal.
That's it, I think. Those three components will form the application core and we can add bells and trinkets on top as we like - that's the good thing about using IPC, actually. Everything is loosely coupled and highly modularised so making changes-to/addition-of new components becomes very easy.
Anyway, that's what I've what I've come up with. I hope that with some refinement, we can reach a sturdy design and implementation strategy for this project. One more thing; since my application will contain a lot of the ideas already mentioned above, I think it should be fine to copy some of the text verbatim from this post to the application :)
I'll post the first draft of the application soon.
Comments are welcome!