デフォルトの動作をオーバーライドする 1 つの方法は、CustomLocaleChangeInterceptorを Bean としてresources.groovy
登録することです。
beans = {
localeChangeInterceptor(your.package.CustomLocaleChangeInterceptor) {
paramName = "lang"
}
}
GISTアイデアは、リクエストの url パラメータでハイフンでつながれたロケール文字列を処理するために、i18n grails プラグインのデフォルトのインターセプターである
デフォルトをオーバーライドすることです。localeChangeInterceptor
カスタム ロケール インターセプターで確認する主なロジックは次のとおりです。
try {
// choose first if multiple specified
if (localeParam.getClass().isArray()) {
localeParam = ((Object[])localeParam)[0]
}
//If locale hyphenated, then change to underscore
if(localeParam.toString()?.contains('-')){
localeParam = StringUtils.replace(localeParam.toString(), "-", "_")
}
def localeResolver = RequestContextUtils.getLocaleResolver(request)
def localeEditor = new LocaleEditor()
localeEditor.setAsText localeParam.toString()
localeResolver?.setLocale request, response, (Locale)localeEditor.value
return true
}
catch (Exception e) {
return true
}