=================================== Ghestalt internationalization logic =================================== - site_lang / base_lang The main language the site was designed for. Most content should have a version in this language. The central language the site falls back to when it doesn't know how to display something in the requested language. It is English for Ghestalt (and can safely be English for most internet sites). - user_lang / otro_lang The language of the user. If a user is NOT multilingual, this will specify his known language. And he should be able to work the site in this language, possibly limited to a shard of the site's content available in this language. - cur_lang / gui_lang The site's interface language. Except for the user generated content, the site should be displayed in this language (i.e. menus, buttons). - wiki_lang / content_lang The preferred or current language of the user generated content viewed. When viewing the wiki, this is the language of the current wikipage being displayed. A user can keep the interface in one language while moving between different translations of the content he is viewing. - prev_lang / other_lang When a user moves between languages, especially for translation purposes, this language is used in a one-language-long list of recent languages to allow quick inter-language navigation. Displaying wiki pages --------------------- When a wiki page in a certain language is requested and does not exist, the English version is served. A notice suggesting to the user to translate the page and the translate button appear. This notice also alerts the user to the fact he is not navigating the English version of the wiki, but links will still go to the wiki_lang version of pages. If an English version is unavailable too, the standard missing-page page will be served. Translation button logic ------------------------ The translate button automatically appears in the following cases: - The wiki page does not have an English (=base_lang) version. - The wiki page does not have a user_lang version. The button will allow you to edit the missing wiki page, with precedence taken by the user_lang missing page (as it is assumed the user is more proficient in this language). Changing interface language --------------------------- A side pane indicated the current interface language and has buttons to change the interface language. The buttons include quick links to the base_lang, user_lang and prev_lang and a button leading to a wider language selection page. Viewing translated wiki pages ----------------------------- A side pane indicated the languages for which the wiki page displayed has translations. Clicking on the links moves you to these pages, and to navigate the wiki in that language. User name and wiki links ------------------------ User names are shown in the English version when requested in any language other than their user_lang (=otro_lang). In the latter language they are shown as otro_name. The otro_name is part of the user profile. Wiki links to pages in languages other than the one of the wiki page formatted are suffixed with the page's language in parenthesis. Each user has his user_lang or otro_lang specified in his profile. The profile can be edited by choosing a link on the ''Account Details'' page accesible from the side pane. Motivating principles --------------------- Some humanization and eye-candy has been implemented. The basic idea is to have a strict non-English speaker be able to navigate the site provided the community has added appropriate content. And contribute content as well. Language barriers often intimidate users and a collaborative project can use many hands and cannot afford to lose the few gold users (metaphorically meaning the users with the most contribution).