[wgo] i18n url scheme (was i18n interface)



There was some discussion already wrt i18n URLs, AFAIK it was also
written up in the WIKI, however I cannot seem to find it right now.
Anyway, there was no agreement about it.

URL scheme:
-----------
To summarize, there were several proposals:

* wgo/page.html?lang=en
 - dismissed: not "friendly url"; we should avoid ?... url parameters

* wgo/page.en.html
 - dismissed: does not work well when url points to a directory
   e.g: wgo/foo/ => wgo/foo.en/ ?
   problem: wgo/foo.en/bar.en/baz.en.html is bad.

* wgo/foo/bar => wgo/fu/bar
 - should be dismissed: several languages can translate foo as fu

* wgo/en/foo/ ; wgo/de/fu/
 - perhaps dismissed?: probably unnecessary complication
   - this would (probably) also require IRIs (international URIs)

therefore, the best choice seems to be:

* wgo/en/foo/ ; wgo/de/foo/
 - with the addition of wgo/foo/, see below


Language negotiation:
---------------------
While it is very useful if the language is "auto-detected" for the user,
there must be a way to view a page in a specific language, no matter the
settings.

* proposed language selection priority:
 1) URL
 2) cookie
 3) browser setting
 4) fallback to default (English)

Auto negotiation:

I propose that language auto-negotiation happens only on URLs, which do
not include a language identifier.

If the user visits a "generic" URL (i.e. URL without the lang id), she
should be http-redirected to the negotiated language page (priority as
described above).

This avoids different kinds of content under the same URL, which would
confuse caching proxies. E.g. the URL wgo/about will not be served in
English or German or French, etc. But wgo/en/about will always be served
in English, and thus can be better cached (until the content itself
changes of course :)

Note, this implies the URL wgo/about is never actually served, but
always redirected. However, links that want to point to localized
content should reference the "generic" url. Therefore, we could include
a "link to this page" element on every page, pointing to the generic
URL. Perhaps describe this linking policy somewhere on the site.

Requirement: such redirect must be cheap in plone.

Manual language selection:

Every page will include a list of the supported languages, where the
user can manually change language.

This action should:
 - save the preferred language in a cookie
 - directly forward the user to the wgo/$lang/... page

This list could include an "Automatic" option which clears the cookie,
and forwards the user to the "generic" URL.

Furthermore, each page could include a link: view in my preferred
language (written in the users preferred language!). E.g. John Doe
arrives to a wgo page written in Chinese. "Select langage:" is written
in Chinese, and the dropdown shows "Chinese" written in Chinese,
therefore if he is not familiar with the site, he might not know how to
change the language.

BTW I'm assuming the language in the selection list appear localized.
(English, Deutsch, etc). All agree?

Further ideas for the language list:

The language list could prioritize based on auto-negotiated languages.
E.g. the list could start with "Automatic", then $CookieLanguage, then
$BrowserLanguage, and perhaps also include "Default (English)", followed
by all the other languages, sorted alphabetically.

I guess the preselected item in the list should be the currently
displayed language. Perhaps this could be moved to the very beginning of
the list.

The list includes languages in localized form. Problems:
 - how is it sorted?
 - i want to check the Chinese translation, but 
   cannot recognize it in the list.

Yet another issue: if the preferred languages appear on top of the list,
will it also be included in the alphabetical part below? (it probably
should)


Error404:
---------

What happens, if the requested translation does not exist?

 - display error message?
 - redirect to preferred (default?) language?
 - both?
 - submit bug report?
 - invite user to translate?

What about outdated translations? Is that an error? Offer to show
previous version? Use some heuristics to see how big the change was?
(e.g. original content diff size, or authors can mark changes as minor
or "not affecting translations") Or offer to show the change to the
user?

Summary, things to agree upon:

 - URL scheme: wgo/$lang/foo
 - lang negotiation priority
 - the redirecting mechanism from wgo/foo
 - language selection list
   - translated?
   - sorted?
   - extra items (automatic, preferred langs)?
   - extra items appear also in alphabetical list?
 - non-existent translations



Cheers,
Greg




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]