Flutter库尔德语本地化插件flutter_kurdish_localization的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter库尔德语本地化插件flutter_kurdish_localization的使用

演示应用

Flutter库尔德语本地化插件 🌍

该插件为中央库尔德语(Sorani)提供了非官方的本地化支持。

开始使用

import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';

localizationsDelegates 数组中添加以下两个委托:

  • KurdishMaterialLocalizations.delegate 用于文本和日期的本地化
  • KurdishWidgetLocalizations.delegate 用于文本和用户界面方向性

示例代码如下:

return MaterialApp(
  localizationsDelegates: [
    ..
    KurdishMaterialLocalizations.delegate,
    KurdishWidgetLocalizations.delegate,
    ...
  ],
  supportedLocales: [ Locale('ku') ],
  locale: Locale('ku')
)

翻译现已可用!

const List<Locale> supportedLocales = [
  Locale('en'),
  Locale('ku'),
  Locale('ar'),
];

完整示例代码

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';
import 'package:flutter_kurdish_localization_example/util/constants.dart';
import 'package:flutter_kurdish_localization_example/localization/demo_localization.dart';
import 'package:flutter_kurdish_localization_example/router/custom_router.dart';
import 'package:flutter_kurdish_localization_example/router/route_constants.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'localization/language_constants.dart';

bool? landingScreen;

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences prefs = await SharedPreferences.getInstance();
  landingScreen = (prefs.getBool('landing') ?? false);

  if (landingScreen == true) {
    debugPrint("Landing : $landingScreen");
  } else {
    debugPrint("Landing : $landingScreen");
  }

  runApp(const MyApp());
}

const List<Locale> supportedLocales = [
  Locale('en'),
  Locale('ku'),
  Locale('ar'),
];

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  static void setLocale(BuildContext context, Locale newLocale) {
    _MyAppState state = context.findAncestorStateOfType<_MyAppState>()!;
    state.setLocale(newLocale);
  }

  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Locale? _locale;
  setLocale(Locale locale) {
    setState(() {
      _locale = locale;
    });
  }

  [@override](/user/override)
  void didChangeDependencies() {
    getLocale().then((locale) {
      setState(() {
        _locale = locale;
      });
    });
    super.didChangeDependencies();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
        systemNavigationBarColor: Colors.transparent, // 导航栏颜色
        statusBarColor: primaryColor, // 状态栏颜色
        statusBarIconBrightness: Brightness.light));
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Flutter多语言本地化演示",
      theme: ThemeData(primarySwatch: Colors.deepOrange),
      locale: _locale,
      supportedLocales: supportedLocales,
      localizationsDelegates: const [
        DemoLocalization.delegate,
        KurdishMaterialLocalizations.delegate,
        KurdishWidgetLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate
      ],
      localeResolutionCallback: (locale, supportedLocales) {
        for (var supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale!.languageCode &&
              supportedLocale.countryCode == locale.countryCode) {
            return supportedLocale;
          }
        }
        return supportedLocales.first;
      },
      onGenerateRoute: CustomRouter.generatedRoute,
      initialRoute: landingScreen! ? homeRoute : landingRoute,
    );
  }
}

更多关于Flutter库尔德语本地化插件flutter_kurdish_localization的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter库尔德语本地化插件flutter_kurdish_localization的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,关于Flutter库尔德语本地化插件 flutter_kurdish_localization 的使用,下面是一个基本的代码示例,展示了如何在Flutter应用中集成和使用该插件进行本地化。

首先,确保你的 pubspec.yaml 文件中已经添加了 flutter_kurdish_localization 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
  flutter_kurdish_localization: ^最新版本号  # 替换为实际最新版本号

然后,运行 flutter pub get 来获取依赖。

接下来,在你的 Flutter 应用中配置 MaterialApp 以支持本地化,包括库尔德语。

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Kurdish Localization Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      // 添加支持的本地化委托
      localizationsDelegates: [
        // 必须添加 GlobalMaterialLocalizations 和 GlobalWidgetsLocalizations
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
        // 添加 KurdishLocalizations 委托
        KurdishLocalizations.delegate,
      ],
      // 设置支持的语言代码列表
      supportedLocales: [
        Locale('ku', ''), // 库尔德语(通用)
        Locale('ku', 'IQ'), // 库尔德语(伊拉克)
        Locale('ku', 'IR'), // 库尔德语(伊朗)
        Locale('ku', 'SY'), // 库尔德语(叙利亚)
        Locale('ku', 'TR'), // 库尔德语(土耳其)
        // 其他支持的语言...
        Locale('en', 'US'), // 英语(美国),作为示例或备用
      ],
      // 设置初始语言
      locale: Locale('ku', ''), // 默认库尔德语(通用)
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final kurdishLocalizations = KurdishLocalizations.of(context);
    
    return Scaffold(
      appBar: AppBar(
        title: Text(kurdishLocalizations.appTitle),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              kurdishLocalizations.helloWorld,
              style: TextStyle(fontSize: 24),
            ),
            ElevatedButton(
              onPressed: () {
                // 示例:切换到英语
                showCupertinoDialog(
                  context: context,
                  builder: (context) => CupertinoAlertDialog(
                    title: Text(kurdishLocalizations.languageChangeTitle),
                    content: Text(kurdishLocalizations.changeToEnglishMessage),
                    actions: <Widget>[
                      CupertinoDialogAction(
                        isDefaultAction: true,
                        child: Text(kurdishLocalizations.confirm),
                        onPressed: () {
                          Navigator.pop(context);
                          // 切换到英语
                          Localizations.overrideLocaleOf(context, Locale('en', 'US'));
                        },
                      ),
                      CupertinoDialogAction(
                        isDefaultAction: false,
                        child: Text(kurdishLocalizations.cancel),
                        onPressed: () {
                          Navigator.pop(context);
                        },
                      ),
                    ],
                  ),
                );
              },
              child: Text(kurdishLocalizations.changeLanguageButton),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml 中添加了 flutter_kurdish_localization 依赖。
  2. MaterialApp 中配置了 localizationsDelegatessupportedLocales 以支持库尔德语和其他语言。
  3. 使用 KurdishLocalizations.of(context) 获取本地化资源,并在UI组件中显示本地化的文本。
  4. 添加了一个按钮示例,用于演示如何在运行时更改语言(虽然这里只是通过覆盖上下文语言来简单演示,实际应用中可能需要更复杂的逻辑来持久化用户选择的语言)。

请确保你已经正确配置了 flutter_kurdish_localization 插件,并且插件的版本与你的 Flutter SDK 版本兼容。如果有任何特定的字符串或功能需要使用,请参考插件的官方文档或源代码以获取更多详细信息。

回到顶部