SoC improve multilingual feature
Note: We are currently looking into implementing this project outside of GSoC. Please do not apply for it.
While Geeklog's interface has been translated into more than 25 languages by now, actually having the site's content available in several languages was only added as an afterthought. So while multilingual support is there now and works most of the time, it is somewhat awkward to use in places.
In this project, we would like someone to look at all the problems with the current solution and see what can be done about them so that multilingual sites are easier to maintain.
These are the known issues with the multilingual support that we would like the student to look into:
Setting a Fallback Language
There is no concept of a "fallback language", i.e. for every piece of content there has to be a separate object in each of the supported languages. So if your site was set up to use English, German, and Spanish, you would need 3 copies of every story (one per language). You can not, say, publish a story in English only and have the English version show up automatically for the other languages.
A related problem is adding another language to the site later. For example, starting a site in English and German and only adding Spanish later. In that case, you currently have to copy all the existing content over to a Spanish version (otherwise, Spanish visitors may see a note about the article not being available to them instead of at least falling back to, say, the English version).
Missing support in the user interface: Users have to make sure to add the proper suffix ('_en', '_de') to objects (story, topic, ...). There's no protection against typos, for example.
Adding a dropdown to select the language for an object would be a simple solution. There may be better ways, though.
For anonymous visitors (guests) of the site, switching the language requires a cookie to be set. Users that do not accept the cookie will not be able to switch the language. This includes bots (e.g. search engines), which won't be able to index the content in languages other than the default language. This can also lead to a mix of languages, e.g. when following a link to an article in English while the site's default language is German.
Level of Difficulty
medium to high
We don't actually expect a lot of new code to be written for this project. This is more of a research project aimed at people who love tinkering with existing code. For compatibility reasons, there is only limited room for radical changes. The project will require a lot of testing and attention to details.