2015-05-04 2 views
5

Я вижу под grails-app/i18n есть тонна messages*.properties связки. Я хотел бы интернационализировать свое приложение, но у меня есть «набор пакетов» на страницу. К комплект комплекта Я имею в виду набор пакетов/свойств, которые содержат один и тот же текст, но для разных языков. Например, если я хочу, чтобы мой сайт, чтобы поддерживать английский, французский и испанский, то мой «О» страница может иметь расслоение набор из 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/ i18n, или есть команда Grails CLI можно использовать (например, grails create-i18n-bundle about)?
  • Как я могу ссылаться на мои вложенные пакеты изнутри GSP? Например, в моем about.gsp я бы просто использовал: <g:message code="about/foo.bar" />?

ответ

1

Grails принимает все пакеты, находящиеся под папкой grails-app/i18n. Таким образом, вы можете создать папку для каждой из ваших групп.

Ссылка на них так же проста, как если бы это было в messages.properties. Я имею в виду, если у вас есть:

Grails-приложение/i18n/messages.properties

foo.bar = foo bar 

Grails-приложение/i18n/о/about.properties

bar.foo = bar foo 

Вы можете сделать это в своем gsp:

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

Здесь у вас есть краткая документация: https://grails.org/wiki/Internationalization

Смежные вопросы