सेटिंग में एप्लिकेशन भाषा बदलें

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


लिखना शुरू करते हैं।
1. एप्लिकेशन क्लास बनाना और इसे एंड्रॉइड में संबंधित एप्लिकेशन सेक्शन में प्रकट में परिभाषित करना आवश्यक है: नाम = "" पैरामीटर।
उदाहरण के लिए:
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="MyApplication" android:enabled="true"> </application> 

(हालांकि कुछ के पास पहले से ही यह वर्ग हो सकता है)
2. भाषा की पसंद से एक सेटिंग बनाएं, इसके लिए सेटिंग्स फ़ाइल में जोड़ें:
 <ListPreference android:key="lang" android:title="@string/LangTitle" android:summary="@string/LangSummary" android:entries="@array/entries_lang" android:entryValues="@array/entryvalues_lang" android:dialogTitle="@string/LangDialogTitle" /> 


3. आवश्यक लाइनों को लाइनों के साथ फाइल में जोड़ें:
 <string name="LangTitle"></string> <string name="LangDialogTitle"> :</string> <string name="LangSummary"> .\n     .</string> 

4. और फ़ाइल में सरणियों के साथ 2 पाठ सरणियाँ:
 <string-array name="entries_lang"> <item> </item> <item></item> <item></item> </string-array> <string-array name="entryvalues_lang"> <item>default</item> <item>en</item> <item>ru</item> </string-array> 

5. निर्मित कक्षा में, ऑनक्रिएट विधि में, स्ट्रिंग चर "लैंग" की घोषणा करें, सेटिंग्स से चर को पढ़ें, एप्लिकेशन कॉन्फ़िगरेशन बदलें, और कॉन्फ़िगरेशन बदलने पर जिसे विधि कहा जाता है, जिसमें हम इसे फिर से बदलते हैं (भाषा को बदले बिना, मैं पूरे आवेदन को बदलना नहीं चाहता था। )। परिणामस्वरूप, हमें निम्न वर्ग मिलता है:
 public class MyApplication extends Application { private SharedPreferences preferences; private Locale locale; private String lang; @Override public void onCreate() { preferences = PreferenceManager.getDefaultSharedPreferences(this); lang = preferences.getString("lang", "default"); if (lang.equals("default")) {lang=getResources().getConfiguration().locale.getCountry();} locale = new Locale(lang); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, null); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); locale = new Locale(lang); Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; getBaseContext().getResources().updateConfiguration(config, null); } } 

6. उसके बाद, भाषा को लागू करने के लिए, यह पूरी तरह से एप्लिकेशन (फिनिश) को पुनरारंभ करने के लिए आवश्यक है; यह यहां मदद नहीं करेगा, क्योंकि यह केवल गतिविधि को पुनरारंभ करता है), इसके लिए मैं System.exit () कमांड का उपयोग करता हूं;
(उदाहरण में, मैंने अलार्म पर एक पुनः आरंभ बिंदु बनाया)।
7. नेटवर्क में समस्याओं से बचने के लिए, स्थानीयकरण का उपयोग करने वाली प्रत्येक गतिविधि के लिए यह सलाह दी जाती है:
  android:configChanges="locale" 

और यह भी, ताकि आवेदन सही ढंग से प्रदर्शित हो स्क्रीन समर्थित आकार का निर्धारण:
 <supports-screens android:anyDensity="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" /> 


ऐसे सरल तरीके से, आप उपयोगकर्ता के जीवन को सरल बना सकते हैं।



इस दृष्टिकोण के लाभ:
-उपयोगकर्ता को भाषा का विकल्प दिया जाता है।
विपक्ष:
सरणियों में जोड़ा भाषाओं निर्दिष्ट करने के लिए -नए।

हमेशा की तरह, स्रोत कोड के साथ एक उदाहरण आवेदन:
1. उदाहरण का स्रोत कोड ;
2. नमूना आवेदन (एपीके)

PS क्या मैं अन्य तरीके से पूरी तरह से एप्लिकेशन को बंद कर सकता हूं (एप्लिकेशन सहित), System.exit () को छोड़कर?

Source: https://habr.com/ru/post/In125812/


All Articles