Groovy 常规遗传基因可以国际化吗?

Groovy 常规遗传基因可以国际化吗?,groovy,internationalization,heredoc,Groovy,Internationalization,Heredoc,具有一些显示给用户并存储为Heredocs的多行字符串。因此,与“普通”(Java)属性文件不同,ConfigSlurper使用了一个基于groovy的属性文件(请参阅),并且工作得非常好。抱歉,如果这是一个愚蠢的问题,但这可以很容易地国际化吗?如果是的话,你能概述一下这是如何实现的吗 据我所知,ConfigSlurper没有对i18n的特殊支持。 您可以通过利用其对的支持来实现它,方法是为每个语言环境创建一个环境闭包。例如: environments { english { sam

具有一些显示给用户并存储为Heredocs的多行字符串。因此,与“普通”(Java)属性文件不同,ConfigSlurper使用了一个基于groovy的属性文件(请参阅),并且工作得非常好。抱歉,如果这是一个愚蠢的问题,但这可以很容易地国际化吗?如果是的话,你能概述一下这是如何实现的吗

据我所知,
ConfigSlurper
没有对i18n的特殊支持。
您可以通过利用其对的支持来实现它,方法是为每个语言环境创建一个环境闭包。例如:

environments {
  english {
    sample {
      hello = "hello"
    }
  }
  spanish {
    sample {
      hello = "hola"
    }
  }
}
创建
ConfigSlurper
时,需要传递所需的语言:

def config = new ConfigSlurper("spanish")

我的解决方案是:在
ConfigSlurper
中,应该将键存储到内部化的字符串中。在控制器/服务中插入
messageSource
localResolver
,从
ConfigSlurper
获取密钥,并在i18nmessages.property文件中查找本地化字符串。示例(不确定代码是否正确,但这是主要思想):


你试过了吗?如果我这样做(这可能是最好的选择!),我想我必须为多行属性这样做:
prop1=prop1的第一行\ prop1的第二行\ prop1的第三行
对不起,无法在多行上正确显示上述注释-希望您理解这将是一个3行的示例…如果我正确地遵循这一点,那么我将无法使用heredoc,但需要具有多行值和尾随反斜杠的常规属性文件。这是正确的吗?我认为这会“起作用”,但不是很理想,因为所有语言(区域设置)的设置都需要在同一个文件中…您可以将它们拆分到多个文件中,并将它们合并到单个配置中(由ConfigSlurper支持)您好-我选择这个作为“答案”,尽管我对它不是很满意-我希望ConfigSlurper隐含的Groovy添加的属性扩展能够扩展,以提供更自然的I18N支持。。。
def config = new ConfigSlurper().parse(new File('src/Config.groovy').toURL())

//localized string1 value
def msg = messageSource.getMessage(config.data1.string1, null, localeResolver.defaultLocale)