select t1.*, sq.*
from table1 t1,
(select a,b,c from table2 ...) sq
where ...
Вот пример использования HttpModule:
http://weblogs.manas.com.ar/smedina/2008/12/17/internationalization-in-aspnet-mvc/
Другие варианты, создать базовый класс Controller и реализовать там логику локализации. Или используйте атрибут фильтра действий, но вам нужно не забыть добавить его на каждый контроллер или объединить этот подход с базовым классом контроллера.
Request.UserLanguages [0] может быть только подсказкой, какой язык хотят видеть пользователи. Большинство пользователей не знают, где изменить язык браузера.
Еще один момент: не убедитесь, что Request.UserLanguages [0] - допустимый язык. Может даже быть нулевым. (Не уверен, что там есть у ботов)
Обычно на странице есть средство выбора языка. После того, как пользователь выбрал язык, он сохраняется в файле cookie, сеансе или URL-адресе. Мне нравится использовать url, потому что он выглядит красиво.
Если пользователь видит вашу страницу, не установив язык на ней, вы должны проверить, является ли Request.UserLanguages [0] языком, который вы поддерживаете, и установите Thread.CurrentThread .CurrentUICulture.
Я использую фильтр для установки Thread.CurrentThread.CurrentUICulture. Это нормально, если никакой другой фильтр не использует Thread.CurrentThread.CurrentUICulture.