Flutter本地化自动管理插件auto_local的使用

Flutter本地化自动管理插件auto_local的使用

auto_local 是一个命令行工具,用于管理你的应用程序中的资源。该工具可以帮助你:

  • 管理应用程序中的语言。
  • 为每种语言生成一个 Dart 类。
  • 使用 GPT 自动为所有语言添加新的文本。
  • 将 SVG 代码转换为 SVG 文件。
  • 为应用程序中的所有 SVG 图标生成一个类,并提供使用方法。
  • 为应用程序中的所有资源生成一个类,并提供直接调用资源路径的方法。
  • 管理应用程序中的 .env 文件并生成一个类以供使用。
  • 更多功能…

开发者

profile **Nasr Al-Rahbi [@abom_me](https://twitter.com/abom_me)**

找我

Twitter Instagram LinkedIn Stack Overflow


安装

使用 dart pub global 命令将此工具安装到系统中。

$ dart pub global activate auto_local

使用

如果你已经修改了 PATH,则可以在任何本地目录中运行此工具。

$ auto_local

否则,你可以使用 pub global 命令来运行它。

$ dart pub global run auto_local

命令

  • auto_local: 启动工具。

语言管理

  • auto_local lang <arguments>: 管理应用程序中的语言,并为 JSON 语言文件中的键生成 Dart 类。
    • --adg: 使用 GPT 为所有语言自动添加新文本(需要提供 API Key)。
    • --adm: 手动为所有语言添加新文本。
    • --auto: 监听 language/path/<json files> 中的更改,并更新 Dart 类。
    • --ref: 刷新 Dart 类文件。
    • --ep: 编辑语言文件的路径。
    • --eapi: 编辑 GPT 的 API Key。

图标管理

  • auto_local icons <arguments>: 管理你的 SVG 图标,将 SVG 代码转换为 SVG 文件,并为所有图标生成 Dart 类。
    • --add: 添加新的 SVG 代码并将其转换为 SVG 文件。
    • --edit: 编辑图标的类名。
    • --auto: 监听 icons/path/<svg files> 中的更改,并更新 Dart 类。
    • --ep: 编辑图标文件夹的路径。
    • --ref: 刷新 Dart 类文件。

环境变量管理

  • auto_local env <arguments>: 用于将环境变量添加到 .env 文件,并从 Dart 类中使用它们。
    • --new: 创建新的环境变量。
    • --ref: 刷新 Dart 类文件。
    • --delete: 删除环境变量。

资源管理

  • auto_local assets <arguments>: 生成资源类,并监听资源文件夹,直接从 Dart 类中调用资源路径。
    • --generate: 生成资源类。
    • --auto: 监听 assets/ 中的更改,并更新 Dart 类。
    • --ignore: 忽略资源文件夹中的任何文件夹,因此工具不会将其添加到 Dart 类中。

示例 Demo

以下是一个简单的示例,展示如何使用 auto_local 工具进行本地化管理。

1. 安装

首先,你需要安装 auto_local 工具。

$ dart pub global activate auto_local

2. 添加语言文件

在项目中创建一个包含不同语言的 JSON 文件夹,例如 language/en.jsonlanguage/ar.json

// language/en.json
{
  "app_title": "My App",
  "welcome_message": "Welcome to my app!"
}
// language/ar.json
{
  "app_title": "تطبيق بلدي",
  "welcome_message": "مرحبا بك في تطبيقي!"
}

3. 生成 Dart 类

使用 auto_local 命令生成 Dart 类。

$ auto_local lang --auto

这将在 lib/l10n/generated_l10n.dart 中生成一个类。

// lib/l10n/generated_l10n.dart
import 'package:flutter/material.dart';

class AppLocalizations {
  final Locale locale;

  AppLocalizations(this.locale);

  static AppLocalizations of(BuildContext context) {
    return Localizations.of<AppLocalizations>(context, AppLocalizations);
  }

  String get app_title => locale.languageCode == 'en' ? 'My App' : 'تطبيق بلدي';
  String get welcome_message => locale.languageCode == 'en' ? 'Welcome to my app!' : 'مرحبا بك في تطبيقي!';
}

4. 使用本地化类

在你的 Flutter 应用程序中使用生成的本地化类。

// main.dart
import 'package:flutter/material.dart';
import 'package:your_app_name/l10n/generated_l10n.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: [
        AppLocalizations.delegate,
      ],
      supportedLocales: [
        Locale('en'),
        Locale('ar'),
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    var localization = AppLocalizations.of(context);

    return Scaffold(
      appBar: AppBar(
        title: Text(localization.app_title),
      ),
      body: Center(
        child: Text(localization.welcome_message),
      ),
    );
  }
}

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

1 回复

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


auto_local 是一个用于 Flutter 应用本地化管理的插件,它可以帮助你自动生成和管理本地化文件,简化多语言支持的实现过程。使用 auto_local,你可以避免手动编写和维护大量的本地化字符串,从而提高开发效率。

安装 auto_local

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

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

然后运行 flutter pub get 来安装插件。

配置 auto_local

  1. 创建本地化文件: 在项目的根目录下创建一个 l10n 文件夹(或其他你喜欢的名称),并在其中创建 JSON 文件来存储不同语言的字符串。例如:

    • l10n/en.json(英语)
    • l10n/es.json(西班牙语)

    JSON 文件的格式如下:

    {
      "hello": "Hello",
      "goodbye": "Goodbye"
    }
    
    {
      "hello": "Hola",
      "goodbye": "Adiós"
    }
    
  2. 配置 pubspec.yaml: 在 pubspec.yaml 文件中配置 auto_local 插件,指定本地化文件的路径和生成代码的输出路径:

    flutter:
      uses-material-design: true
      generate: true
    
    auto_local:
      input_dir: l10n
      output_dir: lib/l10n
    
  3. 生成本地化代码: 运行以下命令来生成本地化代码:

    flutter pub run auto_local:generate
    

    这将在 lib/l10n 目录下生成 Dart 文件,包含所有本地化的字符串。

使用生成的本地化代码

  1. MaterialApp 中配置本地化: 在 MaterialApp 中配置生成的本地化委托和支持的 Locale:

    import 'package:flutter/material.dart';
    import 'package:flutter_localizations/flutter_localizations.dart';
    import 'l10n/generated/app_localizations.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          localizationsDelegates: [
            AppLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          supportedLocales: [
            const Locale('en', ''), // 英语
            const Locale('es', ''), // 西班牙语
          ],
          home: MyHomePage(),
        );
      }
    }
    
  2. 在 UI 中使用本地化字符串: 在 UI 中使用生成的本地化字符串:

    import 'package:flutter/material.dart';
    import 'l10n/generated/app_localizations.dart';
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(AppLocalizations.of(context)!.hello),
          ),
          body: Center(
            child: Text(AppLocalizations.of(context)!.goodbye),
          ),
        );
      }
    }
回到顶部