2010-02-18 4 views
21

मैं संपत्ति फ़ाइलों के साथ एक UIBinder एप्लिकेशन को अंतर्राष्ट्रीय बनाने की कोशिश कर रहा हूं। चूंकि हमारे पास com.google.gwt.i18n.client.Messages इंटरफ़ेस (GWT 1.7.1) द्वारा पहले से ही बहुत सारे अनुवाद सामने आए हैं, इसलिए हम इन संदेशों का पुन: उपयोग करना चाहते हैं।मैं संदेशों के साथ एक जीडब्ल्यूटी यूआई बाइंडर पेज को अंतर्राष्ट्रीय कैसे बना सकता हूं?

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
xmlns:g="urn:import:com.google.gwt.user.client.ui" 
xmlns:res="ui:with:be.credoc.iov.webapp.client.MessageConstants"> 

<g:HTMLPanel> 
    <div> 
    <res:msg key="email">Emaileke</res:msg>: 
    <g:TextBox ui:field="email" /> 
    </div> 
</g:HTMLPanel> 
</ui:UiBinder> 

MessageConstants वर्ग इस तरह दिखता है:

@DefaultLocale("nl") 
public interface MessageConstants extends Messages { 
String email(); 
} 

हालांकि, यह काम नहीं करता

मैं निम्नलिखित की कोशिश की है। मैं यह कैसे कर सकता हूँ?

उत्तर

27

अद्यतन:

के बाद से इगोर अपने जवाब में लिखा था, वहाँ ui बांधने की मशीन में संदेशों का उपयोग करने का एक नया तरीका है।

<span>This <ui:text from="{msgRes.message}" /> has been internationalized</span> 

इस विधि इस मुद्दे पर टिप्पणी में GWT के text resource UiBinder integration

+1

यदि आप अपना सुधार करेंगे दस्तावेज़ीकरण के लिंक के साथ उत्तर दें, मुझे यकीन है कि आपको योग्य अपवॉट मिलेगा :) (मैं स्वयं को लिंक संपादित करना और जोड़ना चाहता था, लेकिन दस्तावेज़ों पर त्वरित नज़र के बाद, मुझे लगता है कि आपको विधि नहीं मिल रही है का जिक्र कर रहे हैं)। –

+0

प्रतिक्रिया इगोर के लिए धन्यवाद। मुझे यकीन नहीं है कि मुझे यह चाल कहाँ मिली, लेकिन यह निश्चित रूप से प्रलेखन में नहीं था। क्या आप किसी ऐसे व्यक्ति को जानते हैं जो Google पर काम करता है जिसे मैं जीडब्ल्यूटी डॉक्स में जोड़ने के लिए बग कर सकता हूं? – logan

+1

इच्छा मुझे पता था;) लेकिन आप [जीडब्ल्यूटी चर्चा सूची] (http://groups.google.com/group/google-web-toolkit) के माध्यम से जीडब्ल्यूटी डेवलपर्स तक पहुंच सकते हैं या अपने [बगट्रैकर] में एक नया टिकट खोल सकते हैं (http://code.google.com/p/google-web-toolkit/issues/list)। –

8

अंतर्राष्ट्रीयकरण के साथ संयोजन में यूआईबिंदर के साथ एक ज्ञात समस्या है, यह हालिया धागा gwt bugtracker पर भी देखें: http://code.google.com/p/google-web-toolkit/issues/detail?id=4355

comment 4 में एक समाधान दिया जाता है:

यदि आपका UiBinder फ़ाइल कहा जाता है कहते हैं, , 'LoginView.ui.xml' तो फोन गुण LoginViewLoginViewUiBinderImplGenMessages.properties फ़ाइल (हाँ 'LoginView' प्रकट होता है दो बार) और यह अगले दृश्य के जावा स्रोत पैकेज में फ़ाइल करने के लिए रखा है, तो कुल मिलाकर आप 3 फ़ाइलें होगा:

LoginView.ui.xml 
LoginView.java 
LoginViewLoginViewUiBinderImplGenMessages.properties 
+0

धन्यवाद, अच्छा जानकारी का उपयोग करता है - UiBinder साथ पूरे i18n अभी भी मेरे लिए किनारों पर किसी न किसी तरह लगता है, मैं चाहता हूँ GWT टीम यह कम हो जाएगा " hacky "। –

+0

आप एक ही फ़ाइल में अपने स्थानीय तारों को केंद्रीकृत करने के लिए जीडब्ल्यूटीपी के साथ प्रस्तावित पायथन स्क्रिप्ट को भी देखना चाह सकते हैं: http://code.google.com/p/gwt-platform/wiki/MergeLocale –

13

अद्यतन:
कृपया जीडब्ल्यूटी के हाल के संस्करणों में उपलब्ध समाधान के लिए नीचे logan's answer देखें।


मैं था (वास्तव में, है) एक ही समस्या के रूप में आप करते हैं - GWT 2.0 की ओर पलायन के बाद मैं एक गुण फ़ाइल मैं अपने UiBinder फ़ाइलों में उपयोग करना चाहता था था। ऐसा लगता है GWT devs लोगों वाक्य रचना i18n guide for UiBinder में वर्णित उपयोग करना चाहते हैं - - दुर्भाग्य से, मैं नहीं है कि मैं चाहता था यह काम करने के लिए मिल सकता है, जहां एक संदेश इंटरफेस हर UiBinder टेम्पलेट के लिए संकलन के दौरान बनाई गई है, आदि

वैसे भी, आप अभी भी इस तरह बाहरी Messages इंटरफेस का उपयोग कर सकते हैं:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> 
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder" 
    xmlns:g="urn:import:com.google.gwt.user.client.ui"> 
    <ui:with field='cc' type='path.to.i18n.SomeMessages'/> 
    <ui:with field='res' type='path.to.resource.ResourceBundle'/> 
    <ui:style> 
     .required { 
     color: red; 
     font-weight: bold; 
    } 
    .right { 
     text-align: right;  
    } 
    .textBox { 
     margin-right: 7px; 
    } 
    </ui:style> 
    <g:HTMLPanel styleName='{res.style.form} {res.style.mbox}' ui:field='mainPanel'> 
     <h2 ui:field='loginHeader' /> 
     <h3 ui:field='loginLabel' /> 
     <div class='{style.textBox}'><g:TextBox ui:field="loginBox" /></div> 
     <h3 ui:field='passwordLabel' /> 
    <div class='{style.textBox}'><g:PasswordTextBox ui:field="passwordBox" /></div> 
    <div><g:CheckBox ui:field='rememberMeCheckBox' text='{cc.rememberMeCheckboxText}' /></div> 
    <div class='{style.right}'><g:Button ui:field='submitButton' text='{cc.loginSubmitButtonText}' /></div> 
    </g:HTMLPanel> 
</ui:UiBinder> 

हालांकि, कि केवल Button के शीर्षक, आदि, divs की नहीं सामग्री की तरह सामान के लिए काम करता है:/तुम वर्ग के लोगों के पीछे भर सकते हैं UiBinder टेम्पलेट, लेकिन एक बेहतर तरीका होना चाहिए।

मुझे उम्मीद थी तुम, पिछली बार मैं यह काम नहीं किया जाँच innerHTML के माध्यम से भीतरी एचटीएमएल सेट कर सकते हैं कि (के बाद से UiBinder कि विधि समझते हैं और यह XML/UiBinder टेम्पलेट के माध्यम से मूल्य है स्थापित करने के लिए अनुमति चाहिए), लेकिन अफसोस:/

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