2015-05-04 74 views
5

我看到grails-app/i18n有一吨messages*.properties捆绑。我想国际化我的应用程序,但每个页面有1个“捆绑集”。通过捆绑套装我的意思是,一套捆绑/属性文件包含相同的文本,但不同的语言。举例来说,如果我想我的网站支持英语,法语和西班牙语,然后我的“关于”页面可能有捆绑一套3根:Grails:组织i18n捆绑

  • about.properties(英文)
  • about_fr.properties(法国)
  • about_es.properties(西班牙)

如果我的应用程序由100页,我有每页3个属性文件,这是300的属性文件,我最终将有grails-app/i18n下!这是一个可以蠕虫!

我想知道如果我能grails-app/i18n下添加子文件夹和将其安排在分散的方式:

myapp/ 
    grails-app/ 
     i18n/ 
      about/ 
       about.properties 
       about_fr.properties 
       about_es.properties 
      contact/ 
       contact.properties 
       contact_fr.properties 
       contact_es.properties 
      fizzbuzz/ 
       fizzbuzz.properties 
       fizzbuzz_fr.properties 
       fizzbuzz_es.properties 
      ... etc. 

这将使用于好得多/清洁/更有条理的代码。如果这是可能的:

  • 难道我刚才创建的文件夹/包下grails-app/国际化,或者是有一个Grails CLI命令,我可以使用(例如,grails create-i18n-bundle about)?
  • 然后我如何从GSP中引用我的嵌套包?例如,在我的about.gsp中,我会使用:<g:message code="about/foo.bar" />

回答

1

Grails将grails-app/i18n文件夹下的所有包捆绑在一起。所以你可以为每个组创建一个文件夹。

引用它们就像在messages.properties中一样简单。 我的意思是,如果您有:

的grails-app/i18n中/ messages.properties

foo.bar = foo bar 

的grails-app/i18n中/约/ about.properties

bar.foo = bar foo 

你可以在你的gsp上做:

<g:message code="foo.bar"/> 
<g:message code="bar.foo"/> 

在这里你有一个简要的文件:https://grails.org/wiki/Internationalization