Skip to content

Commit aabbe7e

Browse files
authored
Merge pull request #13847 from codeconsole/7.0.x-i18n-autoconfiguration
I18nAutoConfiguration
2 parents 59e1d27 + 0e1f7e4 commit aabbe7e

File tree

4 files changed

+65
-31
lines changed

4 files changed

+65
-31
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package org.grails.plugins.i18n;
2+
3+
import grails.config.Settings;
4+
import grails.core.GrailsApplication;
5+
import grails.plugins.GrailsPluginManager;
6+
import grails.util.Environment;
7+
import org.grails.spring.context.support.PluginAwareResourceBundleMessageSource;
8+
import org.grails.web.i18n.ParamsAwareLocaleChangeInterceptor;
9+
import org.springframework.beans.factory.annotation.Value;
10+
import org.springframework.boot.autoconfigure.AutoConfiguration;
11+
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
12+
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
13+
import org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration;
14+
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
15+
import org.springframework.context.MessageSource;
16+
import org.springframework.context.annotation.Bean;
17+
import org.springframework.context.support.AbstractApplicationContext;
18+
import org.springframework.web.servlet.DispatcherServlet;
19+
import org.springframework.web.servlet.LocaleResolver;
20+
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
21+
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
22+
23+
@AutoConfiguration(before = { MessageSourceAutoConfiguration.class, WebMvcAutoConfiguration.class })
24+
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
25+
public class I18nAutoConfiguration {
26+
27+
@Value("${" + Settings.GSP_VIEW_ENCODING + ":UTF-8}")
28+
private String encoding;
29+
30+
@Value("${" + Settings.GSP_ENABLE_RELOAD + ":false}")
31+
private boolean gspEnableReload;
32+
33+
@Value("${" + Settings.I18N_CACHE_SECONDS + ":5}")
34+
private int cacheSeconds;
35+
36+
@Value("${" + Settings.I18N_FILE_CACHE_SECONDS + ":5}")
37+
private int fileCacheSeconds;
38+
39+
@Bean(DispatcherServlet.LOCALE_RESOLVER_BEAN_NAME)
40+
public LocaleResolver localeResolver() {
41+
return new SessionLocaleResolver();
42+
}
43+
44+
@Bean
45+
public LocaleChangeInterceptor localeChangeInterceptor() {
46+
ParamsAwareLocaleChangeInterceptor localeChangeInterceptor = new ParamsAwareLocaleChangeInterceptor();
47+
localeChangeInterceptor.setParamName("lang");
48+
return localeChangeInterceptor;
49+
}
50+
51+
@Bean(AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME)
52+
public MessageSource messageSource(GrailsApplication grailsApplication, GrailsPluginManager pluginManager) {
53+
PluginAwareResourceBundleMessageSource messageSource = new PluginAwareResourceBundleMessageSource(grailsApplication, pluginManager);
54+
messageSource.setDefaultEncoding(encoding);
55+
messageSource.setFallbackToSystemLocale(false);
56+
if (Environment.getCurrent().isReloadEnabled() || gspEnableReload) {
57+
messageSource.setCacheSeconds(cacheSeconds);
58+
messageSource.setFileCacheSeconds(fileCacheSeconds);
59+
}
60+
return messageSource;
61+
}
62+
}

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

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,12 @@
1515
*/
1616
package org.grails.plugins.i18n
1717

18-
import grails.config.Config
19-
import grails.config.Settings
20-
import grails.core.GrailsApplication
2118
import grails.plugins.Plugin
2219
import grails.util.BuildSettings
23-
import grails.util.Environment
2420
import grails.util.GrailsUtil
2521
import groovy.util.logging.Slf4j
26-
import org.grails.spring.context.support.PluginAwareResourceBundleMessageSource
27-
import org.grails.web.i18n.ParamsAwareLocaleChangeInterceptor
2822
import org.springframework.context.support.ReloadableResourceBundleMessageSource
2923
import org.springframework.core.io.Resource
30-
import org.springframework.web.servlet.i18n.SessionLocaleResolver
3124

3225
import java.nio.file.Files
3326

@@ -44,29 +37,6 @@ class I18nGrailsPlugin extends Plugin {
4437
String version = GrailsUtil.getGrailsVersion()
4538
String watchedResources = "file:./${baseDir}/**/*.properties".toString()
4639

47-
@Override
48-
Closure doWithSpring() {{->
49-
GrailsApplication application = grailsApplication
50-
Config config = application.config
51-
boolean gspEnableReload = config.getProperty(Settings.GSP_ENABLE_RELOAD, Boolean, false)
52-
String encoding = config.getProperty(Settings.GSP_VIEW_ENCODING, 'UTF-8')
53-
54-
messageSource(PluginAwareResourceBundleMessageSource, application, pluginManager) {
55-
fallbackToSystemLocale = false
56-
if (Environment.current.isReloadEnabled() || gspEnableReload) {
57-
cacheSeconds = config.getProperty(Settings.I18N_CACHE_SECONDS, Integer, 5)
58-
fileCacheSeconds = config.getProperty(Settings.I18N_FILE_CACHE_SECONDS, Integer, 5)
59-
}
60-
defaultEncoding = encoding
61-
}
62-
63-
localeChangeInterceptor(ParamsAwareLocaleChangeInterceptor) {
64-
paramName = "lang"
65-
}
66-
67-
localeResolver(SessionLocaleResolver)
68-
}}
69-
7040
@Override
7141
void onChange(Map<String, Object> event) {
7242
def ctx = applicationContext
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
org.grails.plugins.i18n.I18nAutoConfiguration

grails-web-common/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ dependencies {
1010
compileOnly "jakarta.servlet:jakarta.servlet-api"
1111
testCompileOnly "org.springframework:spring-test"
1212

13-
compileOnly "org.springframework.boot:spring-boot-autoconfigure"
13+
// now used by plugins for autoconfiguration
14+
api "org.springframework.boot:spring-boot-autoconfigure"
1415
api "org.springframework:spring-webmvc"
1516
api "org.springframework:spring-context-support"
1617
implementation "com.github.ben-manes.caffeine:caffeine"

0 commit comments

Comments
 (0)