
Sudah banyak yang ditulis mengenai pelokalan (internasionalisasi) aplikasi Flutter.
Dokumentasi resmi membahas masalah ini secara terperinci, selain itu, sejumlah penggemar menggambarkan berbagai pendekatan .
Artikel ini tidak berpura-pura lengkap, tetapi merupakan deskripsi praktik yang, menurut pendapat saya, sangat efektif mengurangi input manual.
Kita berbicara tentang pelokalan menggunakan flutter_i18n , sebuah plugin Android Studio yang dapat digunakan untuk menghilangkan pekerjaan rutin dan kode boilerplate.
Persiapan
Instal dulu flutter-i18n plugin

Setelah reboot, file / i18n.dart dan res / values / strings_en.arb yang dihasilkan secara otomatis akan ditambahkan ke struktur proyek

(Saya secara manual menambahkan file strings_ru.arb untuk bahasa Rusia)
Harap dicatat bahwa Android Studio 3.3.1 - 3.4 berisi semacam kusen, karena itu file pelokalan tidak dibuat. Saya menggambarkan masalah ini di stackoverflow, dan mendapat solusi . Solusi lain adalah untuk sementara waktu tetap menggunakan AS 3.2, tetapi ini adalah amatir.
Anda juga perlu menginstal paket flutter_localizations untuk melokalkan widget Flutter internal (ini akan dilakukan untuk Anda di tingkat sistem).
dev_dependencies: flutter_localizations: sdk: flutter
Setelah itu, Anda cukup menambahkan parameter pelokalan ke konstruktor:
return MaterialApp( localizationsDelegates: [ S.delegate, GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, DefaultCupertinoLocalizations.delegate, ], supportedLocales: S.delegate.supportedLocales,
dan jangan lupa untuk mengimpor paket
import 'package:f_latte/generated/i18n.dart';
Lokalisasi
Mulailah menambahkan baris yang diperlukan, mengamati notasi JSON, seperti ini:
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", }
Omong-omong, plugin mengimplementasikan logika bekerja dengan bentuk jamak ( jamak ), untuk ini Anda harus memberi nama kunci dalam file arb dengan cara tertentu. Cara kerjanya akan menjadi jelas bagi Anda dari kode contoh.
Untuk menambahkan bahasa, cukup tambahkan file yang diperlukan ke paket yang sama, dan tambahkan string terlokalisasi dengan kunci yang sama di sana, seperti ini:
strings_ru.arb:
{ "title": "F-", "greeting": ", ${name}!", "pushingZero": " ", "pushingOne": " ", "pushingTwo": " ", "pushingOther": " $cnt ()" }
Dengan perubahan apa pun pada file-file ini, plugin akan membangun kembali file i18n.dart . Ngomong-ngomong, saya sarankan setidaknya melihatnya, banyak yang akan menjadi lebih jelas.
Itu saja. Di tempat di mana akses ke string terlokalisasi diperlukan, cukup panggil metode localizer statis:
Ini adalah tampilannya

Kode dengan contoh ada di sini (cabang iter_0001_localiz
).
Sumber ilustrasi.
PS
Menurut awaik
pelokalan tidak akan berfungsi di iOS. Untuk membuatnya berfungsi, Anda perlu menambahkan bahasa ke bagian info di Xcode. Kalau tidak, itu tidak menentukan apa-apa dan tidak menghasilkan kesalahan.
disini