--- TopicTranslationsPlugin.pm.org 2006-08-10 18:12:45.000000000 +0900 +++ TopicTranslationsPlugin.pm 2006-08-11 18:30:21.000000000 +0900 @@ -22,6 +22,8 @@ $debug @translations $defaultLanguage + $redirectMethod + $userLanguage $acceptor ); @@ -48,15 +50,19 @@ # corresponding plugin setting (or "en" if someone messes with it) my $trans = TWiki::Func::getPreferencesValue("TOPICTRANSLATIONS") || TWiki::Func::getPluginPreferencesValue("TOPICTRANSLATIONS") || "en"; @translations = split(/,\s*/,$trans); + $redirectMethod = TWiki::Func::getPreferencesValue("REDIRECTMETHOD") || TWiki::Func::getPluginPreferencesValue("REDIRECTMETHOD") || "http"; # http or user + $userLanguage = TWiki::Func::getPreferencesValue("LANGUAGE") || "en"; # first listed language is the default one: $defaultLanguage = $translations[0]; # create a language acceptor for later use: - $acceptor = I18N::AcceptLanguage->new( - strict => 0, - defaultLanguage => $defaultLanguage - ); + if($redirectMethod eq "http"){ + $acceptor = I18N::AcceptLanguage->new( + strict => 0, + defaultLanguage => $defaultLanguage + ); + } # must I redirect to the best available translation? my $mustRedirect = (! TWiki::Func::getPluginPreferencesFlag("DISABLE_AUTOMATIC_REDIRECTION")); @@ -241,7 +247,17 @@ { my $theTopic = shift || $topic; my @alternatives = findAvailableTranslations($theTopic); - return $acceptor->accepts($ENV{HTTP_ACCEPT_LANGUAGE}, \@alternatives); + my $best=$defaultLanguage; + #my $best="ko"; + $redirectMethod="user"; + if ($redirectMethod eq "user"){ + foreach $lang (@alternatives){ + $best=$lang if $userLanguage eq $lang; + } + } else { # $redirectMethod is http or anything else + $best=$acceptor->accepts($ENV{HTTP_ACCEPT_LANGUAGE}, \@alternatives); + } + return $best; } # check if a redirection is needed, possible, and do that if it's the case