Конфигурация с полосами Грааля для каждой локали - PullRequest
2 голосов
/ 05 сентября 2011

Есть ли способ в Grails разделить конфигурацию по локали?

например, вот так:

locale {
    fr-FR {
        grails.serverURL = "http://www.mysite.fr"
    }
    en-GB {
        grails.serverURL = "http://www.mysite.co.uk"
    }
}

Мы начинаем интернационализацию нашего сайта для нескольких стран / языков, и некоторые конфигурации должны соответствовать конкретной стране.

Спасибо

1 Ответ

2 голосов
/ 05 сентября 2011

Если значения конфигурации являются строками (как указано выше), вы можете поместить их в файлы 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;        
}
...