SoC improve multilingual feature

From GeeklogWiki
Revision as of 13:00, 29 March 2008 by Dirk (talk | contribs) (New SoC project: Improve multi-language support)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
(Return to the main idea page for the Google Summer of Code)


Incentive

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 multi-language 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 multi-language sites are easier to maintain.


Details

These are the known issues with the multi-language 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).

User Interface

Missing support in the user interface: Users have to make sure to add the proper sufffix ('_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.

Blocks

Blocks (in the side bars) are not multi-language enabled. This is due to the different block types: Some blocks display content entered by the user, others contain navigation elements and content that is created automatically but may not need to be multi-language enabled.

Anonymous Visitors

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.


Further reading