Skip to content

Commit 1fe89a3

Browse files
committed
fix for GRAILS-7416 "switching the apps locale with ?lang=XX Parameter is not working on the index.gsp page"
1 parent be92fe4 commit 1fe89a3

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

grails-plugin-i18n/src/main/groovy/org/codehaus/groovy/grails/plugins/i18n/I18nGrailsPlugin.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ class I18nGrailsPlugin {
8585
}
8686
}
8787

88+
localeResolver(SessionLocaleResolver)
8889
localeChangeInterceptor(ParamsAwareLocaleChangeInterceptor) {
8990
paramName = "lang"
91+
localeResolver = ref("localeResolver")
9092
}
91-
92-
localeResolver(SessionLocaleResolver)
9393
}
9494

9595
@CompileStatic

grails-web-common/src/main/groovy/org/codehaus/groovy/grails/web/i18n/ParamsAwareLocaleChangeInterceptor.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
package org.codehaus.groovy.grails.web.i18n
1717

1818
import groovy.transform.CompileStatic
19+
import org.springframework.beans.factory.annotation.Autowired
20+
import org.springframework.web.servlet.DispatcherServlet
21+
import org.springframework.web.servlet.LocaleResolver
1922

2023
import javax.servlet.http.HttpServletRequest
2124
import javax.servlet.http.HttpServletResponse
@@ -40,11 +43,18 @@ class ParamsAwareLocaleChangeInterceptor extends LocaleChangeInterceptor {
4043

4144
String paramName = DEFAULT_PARAM_NAME
4245

46+
LocaleResolver localeResolver
47+
4348
void setParamName(String name) {
4449
paramName = name
4550
super.setParamName name
4651
}
4752

53+
@Autowired(required = false)
54+
void setLocaleResolver(LocaleResolver localeResolver) {
55+
this.localeResolver = localeResolver
56+
}
57+
4858
@Override
4959
boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
5060

@@ -63,6 +73,10 @@ class ParamsAwareLocaleChangeInterceptor extends LocaleChangeInterceptor {
6373
localeParam = ((Object[])localeParam)[0]
6474
}
6575
def localeResolver = RequestContextUtils.getLocaleResolver(request)
76+
if(localeResolver == null) {
77+
localeResolver = this.localeResolver
78+
request.setAttribute(DispatcherServlet.LOCALE_RESOLVER_ATTRIBUTE, localeResolver)
79+
}
6680
def localeEditor = new LocaleEditor()
6781
localeEditor.setAsText localeParam?.toString()
6882
localeResolver?.setLocale request, response, (Locale)localeEditor.value

0 commit comments

Comments
 (0)