Grails中是否有办法按区域设置对配置进行条带化?
例如像这样:
locale {
fr-FR {
grails.serverURL = "http://www.mysite.fr"
}
en-GB {
grails.serverURL = "http://www.mysite.co.uk"
}
}
我们开始将我们的网站国际化为多个国家/地区/语言,有些配置必须针对具体国家/地区。
由于
答案 0 :(得分:2)
如果配置值是字符串(如上所述),您可以将它们放在message*.properties
文件而不是Config.groovy
中。然后,您可以使用messageSource
Spring bean或message标记来检索当前区域设置的值。
除了下面关于在资源包中混合配置信息的评论之外,另一种方法是以编程方式进行 - 请记住Config.groovy是一个.groovy文件,因此您可以将代码与配置数据混合。以下内容应该有效:
locale {
def serverUrls = [Locale.FRANCE: "http://www.mysite.fr",
Locale.UK: "http://www.mysite.co.uk"]
def currentLocale = org.springframework.context.i18n.LocaleContextHolder.locale
def serverlUrl = serverUrls[currentLocale]
assert serverUrl, "no serverUrl found for Locale $currentLocale"
grails.serverURL = serverUrl
}
如果您想要根据区域设置改变多个配置参数,则以下内容将更整洁
def currentLocale = org.springframework.context.i18n.LocaleContextHolder.locale
switch (currentLocale) {
case Locale.FRANCE:
// config params for France
break;
case Locale.UK:
// config params for UK
break;
}