每个区域设置的条带Grails配置
Grails中有没有办法按区域设置对配置进行条带化 例如:每个区域设置的条带Grails配置,grails,configuration,localization,locale,Grails,Configuration,Localization,Locale,Grails中有没有办法按区域设置对配置进行条带化 例如: locale { fr-FR { grails.serverURL = "http://www.mysite.fr" } en-GB { grails.serverURL = "http://www.mysite.co.uk" } } 我们正在开始为多个国家/语言的网站进行国际化,一些配置必须针对具体国家/地区 谢谢如果配置值是字符串(如上所述),您可以将它们放在消息*.
locale {
fr-FR {
grails.serverURL = "http://www.mysite.fr"
}
en-GB {
grails.serverURL = "http://www.mysite.co.uk"
}
}
我们正在开始为多个国家/语言的网站进行国际化,一些配置必须针对具体国家/地区
谢谢如果配置值是字符串(如上所述),您可以将它们放在
消息*.properties
文件中,而不是配置.groovy
。然后可以使用messageSource
springbean或标记来检索当前语言环境的值
更新
除了下面关于在资源包中混合配置信息的评论之外,另一种方法是以编程的方式进行——记住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;
}
在这种情况下,您将在资源包中混合配置信息,这将起作用,但会很混乱。我想我们必须构建自己的区域设置配置解析器:)