Flutter本地化生成插件stx_easy_localization_generator的使用

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

本文档描述了如何使用 stx_easy_localization_generator 插件来生成 Flutter 应用的本地化文件。

功能 #

该插件可以帮助开发者快速生成本地化文件,以便在 Flutter 应用中实现多语言支持。

开始使用 #

要开始使用 stx_easy_localization_generator,首先需要确保你的项目已经集成了 flutter_localizations 和 easy_localization 包。你可以通过以下命令将它们添加到 pubspec.yaml 文件中:

# 在 pubspec.yaml 文件中添加依赖
dependencies:
  flutter:
    sdk: flutter
  easy_localization: ^3.0.0
  stx_easy_localization_generator: ^1.0.0

dev_dependencies: build_runner: ^2.0.0 stx_easy_localization_generator: ^1.0.0

使用 #

要使用 stx_easy_localization_generator,你需要创建一个本地化文件,并配置生成器以生成所需的本地化文件。

首先,在项目根目录下创建一个资源文件夹(例如 `resources`),并在其中创建一个 JSON 文件(例如 `en.json`)来存储英语本地化字符串。

// resources/en.json
{
  "hello": "Hello",
  "welcome": "Welcome"
}

接下来,配置 `pubspec.yaml` 文件以指定生成器的输入和输出路径:

# 在 pubspec.yaml 文件中添加生成器配置
flutter:
  generate: true

stx_easy_localization_generator: input_dir: lib/i18n # 输入目录,包含所有本地化文件 output_dir: lib/generated # 输出目录,生成的本地化文件将存放于此

然后运行生成器命令以生成本地化文件:

flutter packages pub run build_runner build

这将在 `lib/generated` 目录下生成本地化文件,例如 `app_en.arb`。你可以通过以下方式在应用中使用这些文件:

import 'package:easy_localization/easy_localization.dart';

void main() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized();

runApp( EasyLocalization( supportedLocales: [Locale(‘en’, ‘US’), Locale(‘zh’, ‘CN’)], path: ‘assets/translations’, fallbackLocale: Locale(‘en’, ‘US’), child: MyApp(), ), ); }

class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( localizationsDelegates: [ GlobalMaterialLocalizations.delegate, GlobalWidgetsLocalizations.delegate, GlobalCupertinoLocalizations.delegate, ], supportedLocales: context.supportedLocales, locale: context.locale, home: MyHomePage(), ); } }

class MyHomePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(tr(‘hello’)), ), body: Center( child: Text(tr(‘welcome’)), ), ); } }

更多信息 #

如果你需要更多的信息,可以查看插件的文档或访问其 GitHub 仓库。如果遇到任何问题,可以在 GitHub 仓库中提交 issue。


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

1 回复

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


当然,以下是如何在Flutter项目中使用stx_easy_localization_generator插件来实现本地化的一个代码案例。这个插件可以自动生成本地化文件,极大地简化了本地化流程。

1. 添加依赖

首先,在pubspec.yaml文件中添加easy_localizationstx_easy_localization_generator依赖:

dependencies:
  flutter:
    sdk: flutter
  easy_localization: ^3.0.0 # 请检查最新版本号

dev_dependencies:
  build_runner: ^2.0.0 # 构建工具
  stx_easy_localization_generator: ^3.0.0 # 请检查最新版本号

2. 配置build.yaml

在项目根目录下创建或编辑build.yaml文件,添加以下配置来指定stx_easy_localization_generator生成文件的输出目录:

targets:
  $default:
    builders:
      stx_easy_localization_generator:easy_localization_generator:
        enabled: true
        generate_for:
          - lib/locales/**.dart
        options:
          output_dir: lib/generated/locales

3. 创建语言文件

lib/locales目录下创建语言文件,例如en.jsonzh.json

lib/locales/en.json:

{
  "welcome": "Welcome",
  "goodbye": "Goodbye"
}

lib/locales/zh.json:

{
  "welcome": "欢迎",
  "goodbye": "再见"
}

4. 配置main.dart

main.dart中配置EasyLocalization,并引入自动生成的本地化文件:

import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; // 自动生成的文件

part 'generated/locales.g.dart'; // 自动生成的文件入口

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await EasyLocalization.ensureInitialized();
  runApp(
    EasyLocalization(
      supportedLocales: [Locale('en', ''), Locale('zh', '')],
      path: 'lib/locales', // 语言文件路径
      fallbackLocale: Locale('en', ''), // 默认语言
      child: MyApp(),
    ),
  );
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
      localizationsDelegates: context.localizationDelegates,
      supportedLocales: context.supportedLocales,
      locale: context.locale,
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final String welcome = context.tr('welcome');
    final String goodbye = context.tr('goodbye');

    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Localization Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(welcome),
            Text(goodbye),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 切换语言示例
          EasyLocalization.of(context).setLocale(Locale('zh'));
        },
        tooltip: 'Switch to Chinese',
        child: Icon(Icons.translate),
      ),
    );
  }
}

5. 生成本地化文件

在项目根目录下运行以下命令来生成本地化文件:

flutter pub run build_runner build

这将生成lib/generated/locales目录下的文件,通常包括locales.g.dart等。

总结

通过以上步骤,你就可以在Flutter项目中使用stx_easy_localization_generator插件来自动化处理本地化文件了。这个插件极大地简化了手动创建和管理本地化文件的过程,提高了开发效率。

回到顶部