2008-08-19 16 views
9

जीडब्ल्यूटी में मुझे यह निर्दिष्ट करना होगा कि मेरे आवेदन में कौन से लोकेशंस समर्थित हैं। कोड विभिन्न फ़ाइलों में संकलित हो जाता है, प्रत्येक लोकेल के लिए (अन्य संस्करणों के बगल में), लेकिन मुझे अपने ग्राहकों को एकमात्र यूआरएल देना होगा। यह यूआरएल एक ऐसा पृष्ठ माना जाता है जिसे ब्राउज़र द्वारा पसंदीदा लोकेल के अनुसार प्रदर्शित किया जाना चाहिए। मैं लोकेल के लिए HTTP पैरामीटर नहीं रखना चाहता क्योंकि मैं ब्राउज़र द्वारा पसंदीदा लोकेल को फोर्स करना चाहता हूं। इसे जीडब्ल्यूटी में कैसे कोड किया जा सकता है?जीडब्ल्यूटी एप्लिकेशन पर लोकेल जानकारी कैसे प्राप्त करें

क्या मुझे अपाचे रीराइट नियमों का उपयोग करके इसका प्रयास करना चाहिए? मैंने इसे थका दिया, लेकिन मुझे लगता है कि मैं इस तरह के पैरामीटर को पुनः लिखने के नियम में आसानी से नहीं पहुंच सकता।

धन्यवाद एक बहुत, ग्यूसेप

उत्तर

3

जब तक मैं प्रलेखन पढ़ रहा हूँ गलत तरीके से मुझे नहीं लगता कि आप कुछ करने की जरूरत है।

GWT and Locale

एक ग्राहक संपत्ति स्थान में बनाने से, gwt.js में मानक स्टार्टअप प्रक्रिया एक आवेदन का उचित स्थानीयकृत संस्करण चुनता उपयोग में आसानी (यह आसान की तुलना में यह ध्वनि हो सकता है!) प्रदान करने, अनुकूलित प्रदर्शन, और न्यूनतम स्क्रिप्ट आकार।

जिस तरह से मैंने इसे पढ़ा है, जब तक आपके मॉड्यूल ने सभी लोकेल विकल्पों को जोड़ा है, यह स्वचालित होना चाहिए?

+1

? प्रत्येक url जोड़ने लोकेल = foo के बारे में उस दस्तावेज़ में बात करती है। यह "मैन्युअल" जोड़ खराब है, क्योंकि ब्राउजर पहले से वांछित लोकेशंस की एक सूची भेजता है। –

5

जीडब्ल्यूटी के अंतर्राष्ट्रीयकरण के लिए अच्छा समर्थन है। यह link देखें। i18nCreator कमांड प्रोजेक्ट निर्माता और एप्लिकेशन निर्माता जिस तरह से जीडब्ल्यूटी एप्लीकेशन स्थापित करने के तरीके के लिए अंतर्राष्ट्रीयकरण आधारभूत संरचना स्थापित करने में आपकी सहायता कर सकता है।

यदि आपके पास स्थिर तार हैं (यानी अवैध प्रविष्टि!) जिसे अंतर्राष्ट्रीयकृत करने की आवश्यकता है, तो आपको गुण फ़ाइलों और बुनियादी ढांचे को बनाने के लिए i18nCreator कमांड के लिए कोई अतिरिक्त ध्वज की आवश्यकता नहीं है।

यदि आपके पास स्ट्रिंग्स को स्वीकार करने की आवश्यकता है (यानी हैलो {0}), तो आपको गुणों और बुनियादी ढांचे को बनाने के लिए i18nCreator कमांड को -createMessages ध्वज पास करने की आवश्यकता है।

<inherits name="com.google.gwt.i18n.I18N"/> 

अपनी संपत्ति फ़ाइलों को स्थिरांक या संदेश प्रदान करता है और परिभाषित करता है तरीकों (नाम के रूप में एक ही पैकेज में एक जावा इंटरफ़ेस परिभाषित करें:

अब आप अपने मॉड्यूल अपने MyApplication.gwt.xml में i18n मॉड्यूल शामिल करने के लिए की जरूरत है संपत्ति प्रविष्टियों से मेल खाता है) कि सभी वापसी स्ट्रिंग।

MyConstants.properties शामिल हैं:

errorMessage=Invalid Entry! 

MyConstants.java शामिल हैं:

import com.google.gwt.i18n.client.Constants; 

public interface myConstants extends Constants { 
    String errorMessage(); 
} 

अब आप आवेदन से इन अंतर्राष्ट्रीय स्ट्रिंग्स का उपयोग करने की:

public class MyApplication implements EntryPoint { 
    private static final MyConstants constants = (MyConstants)GWT.create(MyConstants.class); 

    public void onModuleLoad() { 
     final Label errorMessage = new Label(constants.errorMessage); 
    } 
} 

GWT के लिए इंटरफ़ेस लागू करता है आप स्वचालित रूप से।

आप एक ही तरीके से संदेश प्राप्त कर सकते हैं।

उम्मीद है कि यह आपको प्रारंभ करने में मदद कर सकता है।

13

मुझे आपके जैसा ही समस्या थी, लेकिन मुझे वास्तव में वर्तमान लोकेल को जानने की आवश्यकता है (मैं डेटा के लिए दूसरे सर्वर का अनुरोध कर रहा हूं जिसे मैं स्थानीयकरण करना चाहता हूं) मुझे यह कक्षा मिली: com.google.gwt.i18n.client.LocaleInfo#getCurrentLocale()। इससे आपको वर्तमान में जीडब्ल्यूटी का उपयोग करना चाहिए।

+0

eppesuig मुझे पता है कि आपके पास पहले से ही जवाब है, लेकिन जैसा कि मैंने इस पृष्ठ पर महसूस किया था जब मैं समाधान ढूंढ रहा था, मैंने कहा कि अन्य व्यक्ति शायद यहां भी गिरेंगे। बीआर –

3

चेक इस com.google.gwt.i18n.client.LocaleInfo.getCurrentLocale()

2
<inherits name="com.google.gwt.i18n.I18N"/> 

<!-- Use browser-specified locale for i18n --> 
<set-configuration-property name="locale.useragent" value="Y"/> 

<!-- Specify locales your application support --> 
<extend-property name="locale" values="en"/> 
<extend-property name="locale" values="de_DE"/> 
<extend-property name="locale" values="ru_RU"/>