每个区域设置的条带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" } } 我们正在开始为多个国家/语言的网站进行国际化,一些配置必须针对具体国家/地区 谢谢如果配置值是字符串(如上所述),您可以将它们放在消息*.

Grails中有没有办法按区域设置对配置进行条带化

例如:

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;        
}

在这种情况下,您将在资源包中混合配置信息,这将起作用,但会很混乱。我想我们必须构建自己的区域设置配置解析器:)