समाधान आम तौर पर इस्तेमाल उपयोगकर्ता की ओर मुख के हैश है एक केंद्रीय प्रबंधक वर्ग में तार। आप उस वर्ग में एक फोन करना है जब भी आप डेटा के साथ एक क्षेत्र को भरने के लिए चाहते हैं: इनसाइड
JLabel label = new JLabel();
label.setText(LocalizationManager.get("MY_LABEL_TEXT"));
LocalizationManager
आप इस कार्यक्रम की वर्तमान भाषा लाने के लिए है, तो होगा उचित में MY_LABEL_TEXT
के लिए उपयुक्त स्ट्रिंग को देखने भाषा। तब प्रबंधक अब 'लोकलाइज्ड' स्ट्रिंग देता है, या कुछ डिफ़ॉल्ट अगर भाषा या स्ट्रिंग उपलब्ध नहीं है।
प्रबंधक को थोड़ा और जटिल मानचित्र के रूप में सोचें; यह एक कुंजी (यानी 'MY_LABEL_TEXT') से मैपिंग कर रहा है जिसे आप प्रदर्शित करना चाहते हैं ("शुभ दिन!" या "बिएनवेनिडो!") इस आधार पर कि आप किस भाषा में हैं। इसे लागू करने के कई तरीके हैं, लेकिन आप मेमोरी/प्रदर्शन कारणों के लिए प्रबंधक स्थिर या सिंगलटन (एक बार लोड) होना चाहते हैं।
उदाहरण के लिए: (1)
public class LocalizationManager {
private SupportedLanguage currentLanguage = SupportedLanguage.ENGLISH;//defaults to english
private Map<SupportedLanguage, Map<String, String>> translations;
public LocalizationManager() {
//Initialize the strings.
//This is NOT a good way; don't hardcode it. But it shows how they're set up.
Map<String, String> english = new HashMap<String, String>();
Map<String, String> french = new HashMap<String, String>();
english.set("MY_LABEL_TEXT", "Good day!");
french.set("MY_LABEL_TEXT", "Beinvenido!");//is that actually french?
translations.set(SupportedLanguage.ENGLISH, english);
translations.set(SupportedLanguage.FRENCH, french);
}
public get(String key) {
return this.translations.get(this.currentLanguage).get(key);
}
public setLanguage(SupportedLanguage language) {
this.currentLanguage = language;
}
public enum SupportedLanguage {
ENGLISH, CHINESE, FRENCH, KLINGON, RUSSIAN;
}
}
(1) मैं इस परीक्षण किया है, न ही यह एक सिंगलटन है, लेकिन यह कफ उदाहरण बंद एक है।
स्रोत
2012-08-17 18:33:51
क्या आपके पास प्रत्येक संभावित भाषा के लिए स्थानीय तार हैं? आप वर्तमान में उन तारों को कैसे ला रहे हैं? या वर्तमान में प्रत्येक तत्व में स्ट्रिंग्स स्ट्रिंग हैं? –
मैंने अभी तक इस समस्या से बचने के लिए, केवल कुछ पंक्तियों को प्रोग्राम को नहीं लिखा है। मैं सब कुछ के लिए खुला हूँ! – Karlovsky120
आप किस प्रकार का जावा प्रोग्राम लिखेंगे? जावाईई/जेएसएफ/आदि या किसी और चीज का उपयोग कर एक वेब ऐप? – jahroy