如何在flutter中进行本地化

问题描述 投票:0回答:1

我正在尝试在 flutter 中进行本地化。你能帮我解决这个问题吗?如何在flutter中进行本地化?


  final connectivity = Connectivity();
  late StreamSubscription<List<ConnectivityResult>> connRes;
  final FlutterLocalization localization = FlutterLocalization.instance;


  @override
  void initState() {
    WidgetsBinding.instance.addObserver(this);
    // ru_RU -> ru
    final String localeName = Platform.localeName.split("_").first;
    localization.init(
      mapLocales: [
        const MapLocale('en', AppLocale.EN),
        const MapLocale('ru', AppLocale.RU),
      ],
      initLanguageCode: (localeName != "ru") ? "en" : "ru",
    );
    localization.onTranslatedLanguage = (_) => setState(() {});
    super.initState();

    connRes = connectivity.onConnectivityChanged.listen((event) {
      if (event.first == ConnectivityResult.none){
        showError(context, 'Internet crached');
      }
    });
  }

  @override
  void didChangeLocales(List<Locale>? locales) {
    if (locales == null){
      return;
    }
    localization.translate((locales.first.languageCode != "ru")
      ? "en"
      : "ru"
    );
    super.didChangeLocales(locales);
  }

  @override
  void dispose() {
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
    connRes.cancel();
  }


flutter localization
1个回答
0
投票

请按照以下步骤操作:

1- 将本地化添加到您的依赖项

dependencies:
  flutter:
    sdk: flutter

  flutter_localizations:
    sdk: flutter

2- 将以下代码添加到您的

main.dart
文件

Future<void> main() async{
  WidgetsFlutterBinding.ensureInitialized();
  MobileAds.instance.initialize();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      localizationsDelegates: const [
        GlobalCupertinoLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      supportedLocales: const [
        Locale("fa", "IR"), // OR Locale('ar', 'AE') OR Other RTL locales
      ],
      locale: const Locale("fa", "IR"),

      theme: ThemeData(
          useMaterial3: true,
          fontFamily: 'Vazir',

          bottomSheetTheme: const BottomSheetThemeData(surfaceTintColor: Colors.white12,),
      ),
      title: 'app title',
      debugShowCheckedModeBanner: false,
      home: const Directionality(textDirection: TextDirection.rtl, child: Home()),
    );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.