Локализация играет решающую роль в создании многоязычных и интернациональных приложений. Во Flutter родной язык означает предпочитаемый пользователем язык и настройки региона на его устройстве. В этой статье блога мы рассмотрим различные методы изменения родного языка во Flutter, а также приведем примеры кода, которые помогут вам создавать приложения, ориентированные на глобальную аудиторию.
Метод 1: использование пакета flutter_localizations
Пакет flutter_localizationsобеспечивает поддержку локализации и интернационализации для приложений Flutter. Чтобы изменить исходную локаль с помощью этого пакета, выполните следующие действия:
-
Импортируйте пакет в файл
pubspec.yaml:dependencies: flutter_localizations: sdk: flutter -
Импортируйте необходимые библиотеки в файл Dart:
import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:flutter/material.dart'; -
Оберните виджет
MaterialAppвиджетомLocalizations:void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ], supportedLocales: [ const Locale('en', 'US'), // English const Locale('es', 'ES'), // Spanish // Add more locales as needed ], // Other MaterialApp properties // ... ); } }
Метод 2: использование пакета flutter_i18n
Пакет flutter_i18nупрощает процесс локализации во Flutter. Вот как вы можете изменить родную локаль с помощью этого пакета:
-
Импортируйте пакет в файл
pubspec.yaml:dependencies: flutter_i18n: ^X.X.X -
Импортируйте необходимые библиотеки в файл Dart:
import 'package:flutter_i18n/flutter_i18n.dart'; import 'package:flutter/material.dart'; -
Инициализируйте пакет
flutter_i18nи установите собственную локаль:void main() { WidgetsFlutterBinding.ensureInitialized(); await FlutterI18n.init(<InitializationOptions>); runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ FlutterI18nDelegate( translationLoader: FileTranslationLoader( useCountryCode: false, basePath: 'assets/i18n', ), ), // Add more delegates as needed ], supportedLocales: [ const Locale('en', 'US'), // English const Locale('es', 'ES'), // Spanish // Add more locales as needed ], // Other MaterialApp properties // ... ); } }
Метод 3: использование пакета Device_Locale
Пакет device_localeпозволяет легко получить доступ к языковым настройкам устройства во Flutter. Выполните следующие действия, чтобы изменить языковой стандарт с помощью этого пакета:
-
Импортируйте пакет в файл
pubspec.yaml:dependencies: device_locale: ^X.X.X -
Импортируйте необходимые библиотеки в файл Dart:
import 'package:device_locale/device_locale.dart'; import 'package:flutter/material.dart'; -
Получите языковой стандарт устройства и установите его в своем приложении:
void main() { WidgetsFlutterBinding.ensureInitialized(); runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { Locale? _locale; @override void initState() { super.initState(); getDeviceLocale().then((locale) { setState(() { _locale = locale; }); }); } @override Widget build(BuildContext context) { return MaterialApp( locale: _locale, // Other MaterialApp properties // ... ); } }
В этой статье мы рассмотрели три различных метода изменения родной локали во Flutter. Пакеты flutter_localizations, flutter_i18nи device_localeпредоставляют удобные способы управления локализацией и интернационализацией в ваших приложениях Flutter. Включив эти методы в процесс разработки, вы сможете создавать приложения, которые легко адаптируются к предпочитаемым пользователем языку и настройкам региона, улучшая взаимодействие с пользователем для глобальной аудитории.