The 'best language' logic only applies if no wiki page is specified, i.e. it only applies to the default wiki page.
Suppose that you select a translated version of a wiki page, and then follow a link to another wiki page, which has also been translated (into the same language).
As is stands, you will probably see the original language version of the second wiki page, and not the translated version. On the face of it, this is an error.
You could, of course, fix this behaviour, by modifying the link in the translated version of the first page, so that it referred directly to the translated version of the second page. In this case, you could argue that the current functionality is in fact correct.
I would disagree, because it makes the process of translating wiki pages too difficult. It would mean, that when you translate a single wiki page, you must locate all other wiki pages in that language, which link to the page, and update the links in those pages. Although the backlinks feature would help find the relevant pages, I don't think that you can reasonably expect a translator to perform this task.
I have already fixed this issue and commited the changes to the Trunk, as revision 16611.
My solution is
(1) Add a hidden input field to the language selection list, so that a selection from this list can be positively identified.
(2) Apply 'best language' logic to all wiki requests, unless the request came via the dropdown list.
(3) When a request comes via the dropdown language list, store the
selected language as the user's preferred language in a session
(4) Use this session variable in the 'best language' logic, by placing it at the top of the list of preferred languages generated
|No attachments for this item|