رفرفة: توطين التطبيق باستخدام Android Studio


لقد تم بالفعل كتابة الكثير عن توطين (تدويل) تطبيقات الرفرفة.
تتناول الوثائق الرسمية هذه المسألة بشيء من التفصيل ، بالإضافة إلى ذلك ، يصف عدد من المتحمسين مجموعة متنوعة من الأساليب .


لا تتظاهر هذه المقالة بأنها شاملة ، لكنها وصف لممارسة تقلل بشكل فعال للغاية من الإدخال اليدوي.


نحن نتحدث عن التعريب باستخدام flutter_i18n ، وهو مكون إضافي يعمل بنظام Android Studio والذي يمكن استخدامه للتخلص من العمل الروتيني ورمز التشفير.


تدريب


قم بتثبيت البرنامج المساعد flutter-i18n أولاً


صورة


بعد إعادة التشغيل ، سيتم تلقائيًا إضافة الملفات التي تم إنشاؤها / i18n.dart و res / values ​​/ strings_en.arb إلى بنية المشروع


صورة


(أضفت ملف strings_ru.arb يدويًا للغة الروسية)


يرجى ملاحظة أن Android Studio 3.3.1 - 3.4 يحتوي على نوع من أنواع القفز ، بسبب عدم إنشاء ملفات الترجمة. وصفت هذه المشكلة على stackoverflow ، وحصلت على حل . حل آخر هو البقاء مؤقتًا على AS 3.2 ، ولكن هذا هو أحد الهواة.


ستحتاج أيضًا إلى تثبيت حزمة flutter_localizations لتوطين عناصر واجهة تعامل Flutter الداخلية (سيتم ذلك لك على مستوى النظام).


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", } 

بالمناسبة ، ينفذ البرنامج المساعد منطق العمل مع الجمع ( الجمع ) ، لذلك يجب عليك تسمية المفاتيح في ملفات arb بطريقة معينة. كيف ستصبح هذه الأمور واضحة لك من خلال رمز المثال.


لإضافة لغات ، ما عليك سوى إضافة الملفات الضرورية إلى الحزمة نفسها ، وإضافة سلاسل مترجمة بنفس المفاتيح هناك ، مثل هذا:


strings_ru.arb:


 { "title": "F-", "greeting": ", ${name}!", "pushingZero": "  ", "pushingOne": " ", "pushingTwo": " ", "pushingOther": " $cnt ()" } 

مع أي تغييرات في هذه الملفات ، سيقوم البرنامج المساعد بإعادة إنشاء ملف i18n.dart . بالمناسبة ، أوصي على الأقل بمشاهدته ، سيصبح الأمر أكثر وضوحًا.


هذا كل شيء. في أي مكان يتطلب الوصول إلى السلاسل المترجمة ، ما عليك سوى استدعاء طريقة المترجم الثابت:


 ///  title: Text(S.of(context).title), ... ///   Text(S.of(context).greeting('User'), ), ... ///    Text( S.of(context).pushing(_counter), style: Theme.of(context).textTheme.display1, , 

هذا هو كيف يبدو


الرمز مع مثال هنا ( iter_0001_localiz branch).




مصدر التوضيح.




PS
وفقا ل awaik

الترجمة لن تعمل تحت دائرة الرقابة الداخلية. لجعلها تعمل ، تحتاج إلى إضافة لغات إلى قسم المعلومات في Xcode. خلاف ذلك ، فإنه لا يحدد أي شيء ولا ينتج أخطاء.

هنا

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


All Articles