Flutter国际化插件intl_usage的使用

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

Flutter国际化插件intl_usage的使用

在Flutter项目中管理多语言翻译文件可能会变得杂乱无章。随着时间的推移,未使用的翻译键会不断累积,使维护工作变得困难。本插件帮助你轻松识别并移除这些未使用的翻译键,特别是在使用easy_localization包的项目中,从而保持项目的整洁与高效。

特性

  • 轻松识别并移除未使用的翻译键,减少混乱,提高项目可维护性。
  • 确保所有翻译文件之间的一致性,通过检测缺失的键来实现。

安装

首先,在你的pubspec.yaml文件中添加该插件作为开发依赖:

dev_dependencies:
  intl_usage: ^1.2.0

同时确保你已经在项目中安装了easy_localization包:

dependencies:
  easy_localization: ^最新版本

运行以下命令以获取新的依赖项:

flutter pub get

使用方法

查找未使用的键

你可以通过以下命令来查找未使用的翻译键:

dart run intl_usage:find_usages

此命令将扫描你的项目,并打印出未使用的翻译键列表,以及因动态字符串拼接等原因导致使用情况不确定的键。

查找缺失的键

你也可以检查翻译文件的一致性,找出在一个或多个文件中缺失的键:

dart run intl_usage:check_translations

自定义选项

  • --path: 指定翻译文件的路径。如果没有提供,则默认搜索assets/translations目录。你也可以在YAML配置文件中定义此路径(见下文)。
  • --known_used_keys: 指定你确定正在使用的翻译键。这些键可能因为它们在单独的包中被使用、动态生成或在系统运行时从单独的JSON文件加载。

使用YAML配置文件

你可以在项目的根目录创建一个intl_usage.yaml文件,定义翻译文件的路径:

path: your/translation/path
known_used_keys:
  - key1
  - key2
  - ...

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

1 回复

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


intl_usage 是一个用于 Flutter 国际化的插件,它可以帮助你轻松地管理和生成多语言支持的代码。通过使用 intl_usage,你可以将应用程序中的字符串提取出来,生成对应的 .arb 文件,并根据这些文件生成 Dart 代码,以便在应用程序中使用。

以下是使用 intl_usage 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.17.0

dev_dependencies:
  intl_usage: ^1.0.0
  build_runner: ^2.1.0

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

2. 创建 intl 配置文件

在你的项目根目录下创建一个 l10n.yaml 文件,用于配置 intl_usage

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-dir: lib/l10n
output-class: AppLocalizations
  • arb-dir: 存放 .arb 文件的目录。
  • template-arb-file: 模板 .arb 文件的名称,通常是你默认的语言文件(如 app_en.arb)。
  • output-dir: 生成的 Dart 代码的输出目录。
  • output-class: 生成的本地化类的名称。

3. 创建 .arb 文件

lib/l10n 目录下创建你的 .arb 文件。例如,创建一个 app_en.arb 文件:

{
  "helloWorld": "Hello World!",
  "@helloWorld": {
    "description": "A simple greeting message"
  }
}

你还可以添加其他语言的 .arb 文件,例如 app_es.arb

{
  "helloWorld": "¡Hola Mundo!"
}

4. 生成 Dart 代码

使用 build_runner 生成 Dart 代码:

flutter pub run build_runner build

这将在 lib/l10n 目录下生成一个 app_localizations.dart 文件,其中包含一个 AppLocalizations 类,用于访问本地化的字符串。

5. 在应用中使用本地化

在你的 Flutter 应用程序中,你可以使用生成的 AppLocalizations 类来访问本地化的字符串。首先,确保你的 MaterialApp 使用 AppLocalizations

import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'l10n/app_localizations.dart';

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

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

然后在你的页面中使用本地化的字符串:

import 'package:flutter/material.dart';
import 'l10n/app_localizations.dart';

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(AppLocalizations.of(context).helloWorld),
      ),
      body: Center(
        child: Text(AppLocalizations.of(context).helloWorld),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!