
काफी पहले से ही स्पंदन अनुप्रयोगों के स्थानीयकरण (अंतर्राष्ट्रीयकरण) के बारे में लिखा गया है।
आधिकारिक दस्तावेज इस मुद्दे पर कुछ विस्तार से बताते हैं, इसके अलावा, कई उत्साही लोग विभिन्न तरीकों का वर्णन करते हैं ।
यह लेख संपूर्ण होने का दिखावा नहीं करता है, लेकिन यह एक अभ्यास का वर्णन है, जो मेरी राय में, बहुत प्रभावी ढंग से मैनुअल इनपुट को कम करता है।
हम स्थानीयकरण के बारे में बात कर रहे हैं flutter_i18n , एक एंड्रॉइड स्टूडियो प्लगइन का उपयोग किया जा सकता है जो कि रूटीन काम और बॉयलरप्लेट कोड से छुटकारा पाने के लिए उपयोग किया जा सकता है।
ट्रेनिंग
पहले स्पंदन-i18n प्लगइन स्थापित करें

रिबूट करने के बाद, उत्पन्न / i18n.dart और Res / मान / strings_en.arb फाइलें स्वचालित रूप से प्रोजेक्ट संरचना में जोड़ी जाएंगी

(मैंने रूसी भाषा के लिए strings_ru.arb फ़ाइल को मैन्युअल रूप से जोड़ा है)
कृपया ध्यान दें कि एंड्रॉइड स्टूडियो 3.3.1 - 3.4 में कुछ प्रकार के जाम शामिल हैं, जिसके कारण स्थानीयकरण फाइलें उत्पन्न नहीं होती हैं। मैंने स्टैकओवरफ़्लो पर इस समस्या का वर्णन किया, और एक समाधान प्राप्त किया । एक अन्य समाधान अस्थायी रूप से 3.2 पर रहना है, लेकिन यह एक शौकिया है।
आंतरिक स्पंदन विगेट्स को स्थानीयकृत करने के लिए आपको flutter_localifications पैकेज स्थापित करने की आवश्यकता होगी (यह आपके लिए सिस्टम स्तर पर किया जाएगा)।
dev_dependencies: flutter_localizations: sdk: flutter
उसके बाद, यह आपके लिए पर्याप्त होगा कि निर्माण में स्थानीयकरण मापदंडों को जोड़ा जाए:
return MaterialApp( localizationsDelegates: [ S.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, DefaultCupertinoLocalizations.delegate, ], supportedLocales: S.delegate.supportedLocales,
और पैकेज को आयात करने के लिए मत भूलना
import 'package:f_latte/generated/i18n.dart';
स्थानीयकरण
बस इस तरह से JSON संकेतन का अवलोकन करते हुए, आवश्यक लाइनें जोड़ना शुरू करें:
strings_en.arb:
{ "title": "F-Latte", "greeting": "Hi, $name!", "pushingZero": "You pressed NONE (", "pushingOne": "You pressed once", "pushingTwo": "You pressed twice", "pushingOther": "You pressed $cnt times", }
वैसे, प्लगइन plurals ( बहुवचन ) के साथ काम करने के तर्क को लागू करता है, इसके लिए आपको एक निश्चित तरीके से arb फ़ाइलों में कुंजियों का नाम देना चाहिए। यह कार्य उदाहरण कोड से आपके लिए कैसे स्पष्ट हो जाएगा।
भाषाओं को जोड़ने के लिए, बस आवश्यक फ़ाइलों को उसी पैकेज में जोड़ें, और स्थानीय कुंजी को उसी कुंजी के साथ जोड़ दें, जैसे:
strings_ru.arb:
{ "title": "F-", "greeting": ", ${name}!", "pushingZero": " ", "pushingOne": " ", "pushingTwo": " ", "pushingOther": " $cnt ()" }
इन फ़ाइलों में किसी भी परिवर्तन के साथ, प्लगइन i18n.dart फ़ाइल का पुनर्निर्माण करेगा। वैसे, मैं कम से कम इसे देखने की सलाह देता हूं, बहुत कुछ स्पष्ट हो जाएगा।
वह सब है। किसी भी स्थान पर जहां स्थानीय स्तर पर तार की आवश्यकता होती है, बस स्थैतिक स्थानीय पद्धति को कॉल करें:
यह कैसा दिखता है

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