2012-12-29 29 views
5

मैं एक ऐसी वेबसाइट बनाना चाहता हूं जिसे दो भाषाओं, एक एलटीआर और एक आरटीएल के साथ देखा जा सके। इसका मतलब है कि सभी सामग्री को दो भाषाओं में से किसी एक में दिखाया जाना चाहिए।जेएसपी अंतर्राष्ट्रीयकरण आरटीएल/एलटीआर

मेरा ढांचा वसंत है, और मैं टाइल्स 2 का उपयोग कर रहा हूं, लेकिन मुझे लगता है कि यह प्रश्न ढांचा विशिष्ट नहीं है।

दो भाषाओं का समर्थन करने के लिए स्पष्ट समाधान सबकुछ दोगुना हो रहा है (सभी जेएसपी, टुकड़े इत्यादि), और आपको उस पेड़ का हिस्सा मिलता है जो आपके द्वारा चुने गए भाषा को फिट करता है। लेकिन यह वेब साइट को बदलने पर समस्याएं पैदा करता है (आप अन्य जेएसपी को अपडेट करना भूल सकते हैं), और स्केलेबल नहीं है (इसे 5 या 10 भाषाओं के लिए करने का प्रयास करें)।

मुझे पता है कि मैं अलग-अलग भाषाओं के लिए स्ट्रिंग होस्ट करने के लिए प्रॉपर्टी फाइलों का उपयोग कर सकता हूं, लेकिन फिर मेरी वेबसाइट वसंत का एक विशाल संग्रह होगा: संदेश टैग और बनाए रखने के लिए बहुत कठिन होगा (यदि मेरे पास अनुच्छेद है तो क्या होगा 100 लाइनों में से, क्या यह सब एक ही गुण रेखा में जाता है?)

क्या कोई फ्रेमवर्क, प्लगइन, अन्य है, जो इस समस्या को हल करता है? क्या कोई इस समस्या के लिए एक चतुर समाधान में आया है?

+0

विचारों के बाहर टाइल/स्प्रिंग/आदि छोड़कर, आप यहां एक मूल जेएसपी/जेएसटीएल उदाहरण पा सकते हैं: http://stackoverflow.com/questions/4276061/how -to-internationalize-a-java-web-application/4278571 # 4278571 – BalusC

+0

मैंने पहले से ही इन तकनीकों का उपयोग अंतर्राष्ट्रीयकृत वेबसाइट बनाने के लिए किया है, इसलिए मैं कुछ अलग दिख रहा हूं ferent।मैं एक ग्रहण प्लगइन बनाने की सोच रहा था जो जादुई रूप से किसी भी जेएसपी टुकड़े को ले जाएगा और इसमें अंतर्राष्ट्रीयकरण को एम्बेड करेगा, बस सोच रहा था कि कोई भी उस तरह से कुछ भी आया है। – TheZuck

उत्तर

2

आमतौर पर, वेब ढांचे का उपयोग वेब साइटों के बजाय वेब अनुप्रयोगों के निर्माण के लिए किया जाता है, और वहां बहुत कम स्थिर पैराग्राफ हैं। अधिकांश सामग्री गतिशील है और डेटाबेस से आता है। लेकिन हां, ऐसा करने का सामान्य तरीका संसाधनों के बंडलों में सबकुछ बाहरी करना है, आमतौर पर गुण फ़ाइलों के रूप में।

एक गुण फ़ाइल में एक लंबे पैराग्राफ लाना ज्यादा समस्या का कारण नहीं है, क्योंकि आप एक बैकस्लैश से प्रत्येक पंक्ति समाप्त होने से कई पंक्तियों में लंबे पैराग्राफ तोड़ सकते हैं:

home.welcomeParagraph=This is a long \ 
    paragraph splitted into several lines \ 
    thanks to backslashes. 
1

RTL और लीटर में से एक है ऊपरी और अधिक कठिन i18n समस्याएं।

मूल रूप से यह एमवीसी-मॉडल के दृश्य-दायरे की समस्या है। इसमें लोगों की त्वचा के रंग जैसे चित्र और भावनात्मक मतभेद भी शामिल हो सकते हैं। इस मामले में आप समाधान एचटीएमएल + सीएसएस के समाधान के लिए बेहतर है।

उदाहरण में:

<style type="text/css"> 
    *:lang(ar) { direction:rtl } 
    *:lang(de) { direction:ltr } 
</style> 

सबसे अच्छा अभ्यास दर्शकों-समूह के सदस्यों के क्या प्रभाव के बारे में वेब पृष्ठों को उन्हें करने के लिए है पूछने के लिए है।

+0

धन्यवाद, लेकिन मैं अनुवाद समाधान की तलाश में हूं, एलटीआर/आरटीएल को कई तरीकों से हल किया जा सकता है, शायद सही नहीं है लेकिन कम से कम यह काम करता है। जिस मुद्दे को मैं समझ नहीं पा रहा हूं, पेजों के दर्जनों पृष्ठों को कई अलग-अलग भाषाओं में अनुवादित करने का तरीका है, बिना दृश्य कोड का विशाल डुप्लिकेशन और कोड को पूरी तरह से अपठनीय बनाकर इसमें सभी टेक्स्ट होने के कारण चर बन जाते हैं – TheZuck

4

मैंने कभी भी एक पूर्ण परियोजना को महसूस नहीं किया है, केवल कुछ परीक्षण। मुझे लगता है कि यह समस्या इतनी बड़ी नहीं है क्योंकि ऐसा लगता है कि आप कुछ सरल नियमों का पालन करते हैं। यहां मैं यह करने का प्रयास करूंगा:

  • <body dir='ltr/rtl'> के साथ दिशा निर्दिष्ट करें। यह सीएसएस दिशा विशेषता बनाम पसंदीदा है।

  • सभी सीएसएस में अलग बाएं/दाएं मार्जिन या पैडिंग से बचें। यदि आपको इस नियम को तोड़ना होगा, तो शायद आपको इन सभी अलग-अलग तत्वों वाली दो अलग-अलग फ़ाइलों (ltr.css और rtl.css) का उपयोग करना होगा।

  • कभी-कभी आपको कुछ तत्वों को बाएं से दाएं या इसके विपरीत स्थानांतरित करने की आवश्यकता होगी। उदाहरण के लिए, एलटीआर में आप बाईं ओर एक मेनू चाहते हैं, लेकिन आरटीएल में आप इसे दाईं ओर चाहते हैं। आप इसे सीएसएस का उपयोग करके प्राप्त कर सकते हैं, लेकिन यदि आप एक विशेषज्ञ नहीं हैं और आपको सभी ब्राउज़रों में इसका परीक्षण करना होगा तो यह कभी-कभी जटिल होता है। एक और विकल्प मामले के आधार पर कुछ IF का उपयोग करना है। यदि आप बूटस्ट्रैप की तरह ग्रिड आधारित सीएसएस लाइब्रेरी का उपयोग करते हैं तो यह अंतिम विकल्प बहुत अच्छी तरह से फिट होगा।

  • ध्यान से चुनें कि आप कौन सी सीएसएस और जेएस पुस्तकालयों का उपयोग करेंगे। जाहिर है, उन लोगों को चुनें जो आरटीएल/एलटीआर समर्थन प्रदान करते हैं।

  • छवियों के बारे में बहुत चिंता न करें। यदि आपको भाषा के आधार पर एक छवि को बदलना है तो शायद इसमें कुछ टेक्स्ट है। तो, आपको वैसे भी अलग-अलग छवियों का उपयोग करना होगा। यह i18n से संबंधित एक समस्या है, एक पाठ दिशा मुद्दा नहीं।

  • अपने ग्राहक को इसके बारे में बहुत अधिक परेशानी न होने दें। मुझे लगता है कि इन नियमों (और शायद कुछ और) के साथ आप एक अच्छा परिणाम प्राप्त कर सकते हैं। लेकिन यदि आपका ग्राहक यहां एक पिक्सेल की शिकायत करना शुरू कर देता है और वहां कोई दूसरा व्यक्ति है, तो आपको यह सब जटिल करना होगा और शायद आवश्यक नहीं है।

  • अपनी भाषा गुण फ़ाइल के बारे में। हाँ, उनका इस्तेमाल करें। हमेशा। यह एक अच्छा अभ्यास भी जब आप केवल एक ही भाषा का प्रयोग कर रहे है: HTML संरचना सामग्री से अलग है, सही या अनुवाद करने के लिए, कुछ शब्द या वाक्य केवल एक फ़ाइल में हैं बहुत ही आसान है ...

1

मैं सहमत हूं यहां प्रदान किए गए अधिकांश समाधानों के लिए। आपकी समस्या तकनीकी के बजाय अधिक डिजाइन (वास्तुशिल्प) उन्मुख है। आपको पथ चुनने की आवश्यकता है कि आपको सर्वर (जावा) पक्ष या स्थिर फाइलों में अंतर्राष्ट्रीयकरण के इस तर्क को रखने की आवश्यकता है या नहीं।

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

यदि आप एकाधिक सीएसएस और अन्य स्थिर फाइलों को रखने के लिए जाना चाहते हैं, तो आपको जल्द ही चीजें जल्द ही आपके हाथों से बाहर निकल जाएंगी। मुझे नहीं लगता कि यह एक रखरखाव समाधान है।

यह सब कहा, मैं इस विकल्प को आवेदन के वास्तुकार को छोड़ दूंगा। वह आवेदन करने की प्रकृति और बाधाओं के आधार पर किस तरह से जाने का फैसला कर पाएगा।

0

आप हर जगह उपयोग नहीं करना चाहते हैं। यह दयालु है क्योंकि यह वही तरीका है जो आपको करना चाहिए। यदि आपको अंतरराष्ट्रीयकरण की आवश्यकता है तो हार्ड-कोडेड ग्रंथों को एक जेएसपी में रखना एक बुरा अभ्यास है।

इसके अलावा, अधिकांश आधुनिक आईडीई आपको ctrl + बाएं क्लिक (या कुंजी को घुमाकर) करके परिवर्तनीय घोषणा पर जाने की अनुमति देता है ताकि आपके कोड में बहुत से चर रखने के लिए रखरखाव के लिए कोई समस्या न हो।

0

सबसे पहले, आपको प्रत्येक पाठ तत्व के लिए अंतर करना चाहिए, भले ही यह एक उपयोगकर्ता इंटरफ़ेस तत्व (उदा। बटन लेबल) या रेडियोधनल सामग्री है।

यूजर इंटरफेस तत्व लेबल गुण फ़ाइल में संग्रहीत किया जाएगा प्रत्येक समर्थित भाषा में अनुवाद करना होगा कि (और गिरावट वापस के रूप में एक डिफ़ॉल्ट मान प्रदान)

redactionnal सामग्री एक सामग्री प्रबंधन प्रणाली में संग्रहीत किया जाएगा कि आप अपनी सामग्री के आसानी से स्थानीय संस्करण को आसानी से ढूंढने के लिए व्यवस्थित करेंगे

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