Flutter本地化内容下载插件po_editor_downloader的使用

Flutter本地化内容下载插件po_editor_downloader的使用

POEditor 下载器

CLI 工具用于通过 POEditor 简单地更新 Flutter 项目中的翻译。


如何安装

flutter pub add dev:po_editor_downloader

如何使用

dart run po_editor_downloader --api_token=key --project_id=id

参数

  • api_token - POEditor 中的 API token
  • project_id - POEditor 中的项目 ID
  • files_path - (可选)保存下载文件的路径,相对于运行脚本的位置。默认为 “lib/l10n/”
  • tags - (可选)按标签过滤结果;可以使用字符串表示单个标签或 JSON 数组表示一个或多个标签
  • filter - (可选)按 ‘translated’, ‘untranslated’, ‘fuzzy’, ‘not_fuzzy’, ‘automatic’, ‘not_automatic’, ‘proofread’, ‘not_proofread’ 过滤结果(仅在项目的设置中启用了校对时可用);可以使用字符串表示单个过滤条件或 JSON 数组表示一个或多个过滤条件

API 参考


完整示例 Demo

以下是一个完整的示例,展示如何使用 po_editor_downloader 插件从 POEditor 下载翻译文件:

import 'package:flutter/material.dart';
import 'package:po_editor_downloader/po_editor_downloader.dart';

void main() async {
  // 设置 API token 和项目 ID
  String apiToken = 'your_api_token';
  int projectId = your_project_id;

  // 调用 po_editor_downloader 插件
  await PoEditorDownloader.downloadTranslations(
    apiToken: apiToken,
    projectId: projectId,
    filesPath: 'lib/l10n/', // 保存路径
    tags: ['tag1'], // 按标签过滤
    filter: 'translated', // 按翻译状态过滤
  );

  print('翻译文件已成功下载');
}

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

1 回复

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


当然,下面是一个关于如何使用 po_editor_downloader 插件来下载 Flutter 应用本地化内容的代码示例。po_editor_downloader 是一个 Flutter 插件,用于从 PO Editor 下载翻译文件并自动更新应用的本地化资源。

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

dependencies:
  flutter:
    sdk: flutter
  po_editor_downloader: ^最新版本号 # 请替换为实际的最新版本号

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

接下来,在你的 Flutter 应用中,你可以按照以下步骤使用 po_editor_downloader 插件:

  1. 配置 PO Editor 的 API 密钥和项目 ID

    你需要在 PO Editor 上创建一个项目并获取 API 密钥和项目 ID。然后,将这些信息存储在你的 Flutter 应用中,通常是在一个安全的地方,比如 .env 文件或者使用 Flutter 的 shared_preferences 插件存储。

  2. 创建下载和更新本地化文件的函数

    下面是一个示例函数,用于从 PO Editor 下载翻译文件并更新 Flutter 应用的本地化资源:

import 'package:flutter/material.dart';
import 'package:po_editor_downloader/po_editor_downloader.dart';
import 'dart:io';
import 'package:path_provider/path_provider.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await downloadAndUpdateLocalizations();
  runApp(MyApp());
}

Future<void> downloadAndUpdateLocalizations() async {
  // 从环境变量或其他安全存储中获取 API 密钥和项目 ID
  String apiKey = '你的PO_EDITOR_API_KEY';
  String projectId = '你的PROJECT_ID';
  String languagesCode = 'en,zh'; // 你想要下载的语言代码,用逗号分隔

  // 获取应用文档目录路径
  Directory appDocDir = await getApplicationDocumentsDirectory();
  String localizationsDir = '${appDocDir.path}/localizations';

  // 创建本地化文件夹(如果不存在)
  Directory localizationsDirectory = Directory(localizationsDir);
  if (!localizationsDirectory.existsSync()) {
    localizationsDirectory.createSync(recursive: true);
  }

  // 下载翻译文件
  try {
    await PoEditorDownloader.download(
      apiKey: apiKey,
      projectId: projectId,
      languages: languagesCode.split(','),
      outputDirectory: localizationsDir,
    );
    print('Localizations downloaded successfully.');
  } catch (e) {
    print('Failed to download localizations: $e');
  }

  // 这里可以添加代码来重新加载 Flutter Localizations 委托,
  // 但由于 Flutter 的限制,这通常需要在应用启动时设置,
  // 因此你可能需要重启应用或重新构建 Localizations 委托的逻辑。
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      // 设置应用的本地化委托(这里假设你已经有了一个委托逻辑)
      // LocalizationsDelegates 和 supportedLocales
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Localization Example'),
        ),
        body: Center(
          child: Text('Hello World!'), // 这里可以使用 Localizations.localeOf(context).languageCode 来获取当前语言代码
        ),
      ),
    );
  }
}

注意

  • 在实际项目中,你应该避免在 main 函数中直接进行网络请求,因为这可能会导致应用启动延迟。更好的做法是使用状态管理库(如 providerriverpodbloc)来处理这些异步操作,并在用户界面中显示加载指示器。
  • 由于 Flutter 的本地化委托需要在应用启动时设置,因此下载新的本地化文件后,你可能需要重新启动应用或实现一种机制来重新加载本地化委托。这通常涉及到更复杂的状态管理逻辑。
  • 确保你处理了所有可能的异常,包括网络错误、文件写入错误等。

这个示例展示了如何使用 po_editor_downloader 插件从 PO Editor 下载翻译文件,但实际应用中可能需要更复杂的逻辑来处理本地化的更新和应用重启。

回到顶部