Flutter本地化插件ckb_localizations的使用

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

Flutter本地化插件ckb_localizations的使用

支持在Flutter应用程序中对索兰尼语言进行本地化的插件。

创建本地化文件

创建以下两个本地化文件:

  • app_ckb.arb
  • app_en.arb

示例代码

// 导入必要的包
import 'package:ckb_localizations/ckb_localizations.dart';
import 'package:example/main.dart';
import 'package:flutter/material.dart';

// 导出生成的本地化类
export "package:flutter_gen/gen_l10n/app_localizations.dart";

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 设置本地化代理和受支持的语言
    return MaterialApp(
      localizationsDelegates: const [
        // 使用默认的AppLocalizations
        ...AppLocalizations.localizationsDelegates,
        // 添加ckb_localizations的本地化代理
        ...CkbLocalizations.localizationsDelegates,
      ],
      // 设置初始语言为索兰尼语言
      locale: const Locale('ckb'),
      // 设置支持的语言列表
      supportedLocales: AppLocalizations.supportedLocales,
      // 设置应用标题
      onGenerateTitle: (context) => AppLocalizations.of(context).appName,
      // 主页面
      home: const HomePage(),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 获取本地化对象
    final l10n = AppLocalizations.of(context);
    return Scaffold(
      appBar: AppBar(
        title: Text(l10n.appName), // 显示应用名称
      ),
      body: Column(
        children: [
          // 显示当前语言
          Text(l10n.localeName),
          // 格式化字符串
          Text(l10n.stringFormat(DateTime.now().toString())),
          // 格式化日期时间
          Text(l10n.datetimeFormat(DateTime.now())),
          // 再次格式化日期时间
          Text(l10n.datetimeFormat(DateTime.now())),
        ],
      ),
    );
  }
}

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

1 回复

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


ckb_localizations 是一个用于 Flutter 应用程序的本地化插件,专门用于支持库尔德语(Sorani)的本地化。它可以帮助开发者在 Flutter 应用中轻松实现库尔德语的文本翻译和本地化。

安装 ckb_localizations 插件

首先,你需要在 pubspec.yaml 文件中添加 ckb_localizations 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  ckb_localizations: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

使用 ckb_localizations 插件

  1. 导入插件

    在你的 Dart 文件中导入 ckb_localizations 插件:

    import 'package:ckb_localizations/ckb_localizations.dart';
  2. 配置本地化支持

    MaterialAppCupertinoApp 中配置本地化支持。你需要指定 localizationsDelegatessupportedLocales

    import 'package:flutter/material.dart';
    import 'package:ckb_localizations/ckb_localizations.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          localizationsDelegates: [
            CkbLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('ckb'), // 库尔德语 (Sorani)
            const Locale('en'),  // 英语
          ],
          home: MyHomePage(),
        );
      }
    }
  3. 使用本地化文本

    在应用程序中使用 CkbLocalizations.of(context) 来获取本地化文本:

    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(CkbLocalizations.of(context)!.helloWorld),
          ),
          body: Center(
            child: Text(CkbLocalizations.of(context)!.welcome),
          ),
        );
      }
    }
  4. 切换语言

    你可以通过更改 MaterialApplocale 属性来切换语言。例如,可以通过一个按钮来切换语言:

    class MyHomePage extends StatefulWidget {
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      Locale _locale = const Locale('ckb');
    
      void _changeLanguage(Locale locale) {
        setState(() {
          _locale = locale;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          locale: _locale,
          localizationsDelegates: [
            CkbLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('ckb'),
            const Locale('en'),
          ],
          home: Scaffold(
            appBar: AppBar(
              title: Text(CkbLocalizations.of(context)!.helloWorld),
            ),
            body: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(CkbLocalizations.of(context)!.welcome),
                  ElevatedButton(
                    onPressed: () => _changeLanguage(const Locale('en')),
                    child: Text('Switch to English'),
                  ),
                  ElevatedButton(
                    onPressed: () => _changeLanguage(const Locale('ckb')),
                    child: Text('Switch to Kurdish'),
                  ),
                ],
              ),
            ),
          ),
        );
      }
    }
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!