2015-05-04 3 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/ i18n तहत फ़ोल्डरों/संकुल बनाने, या वहाँ एक Grails CLI आदेश मैं उपयोग कर सकते हैं (उदाहरण के लिए, grails create-i18n-bundle about)?
  • फिर मैं अपने नेस्टेड बंडलों को जीएसपी के अंदर से कैसे देखूं? उदाहरण के लिए, मेरे about.gsp में, क्या मैं बस उपयोग करूँगा: <g:message code="about/foo.bar" />?

उत्तर

1

Grails grails-app/i18n फ़ोल्डर के नीचे मौजूद सभी बंडल लेते हैं। तो आप अपने प्रत्येक समूह के लिए एक फ़ोल्डर बना सकते हैं।

उन्हें संदर्भित करने के लिए बस इतना आसान है जैसे यह संदेशों में था। प्रॉपर्टीज। मेरा मतलब है, अगर आपके पास:

grails एप्लिकेशन के अंतर्गत/i18n/messages.properties

foo.bar = foo bar 

grails एप्लिकेशन के अंतर्गत/i18n/के बारे में/about.properties

bar.foo = bar foo 

आप अपने जीएसपी में कर सकते हैं:

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

यहां आपके पास एक संक्षिप्त दस्तावेज है: https://grails.org/wiki/Internationalization

संबंधित मुद्दे