Flutter本地化翻译插件po_editor_translations的使用

Flutter本地化翻译插件po_editor_translations的使用

POEditor Translations

CLI工具用于从POEditor自动更新Flutter项目的翻译文件。


使用翻译 🌐

您可以使用以下命令来运行po_editor_translations插件:

dart dart run po_editor_translations --api_token=key --project_id=id --files_path=lib/translations

参数

  • api_token - POEditor的API令牌
  • project_id - POEditor项目ID
  • files_path - 相对于脚本运行位置保存下载文件的路径
  • filter - 通过逗号分隔的标签名称过滤资产。使用*匹配任何标签,并通过在前面添加前缀来否定标签

API参考


示例代码

为了更好地理解如何使用po_editor_translations插件,我们将展示一个完整的示例。

步骤1: 设置POEditor API令牌和项目ID

首先,确保您已经在POEditor上创建了一个项目并获得了API令牌和项目ID。

步骤2: 在Flutter项目中设置路径

在您的Flutter项目中,创建一个目录用于存放翻译文件,例如lib/translations

步骤3: 运行命令

打开终端或命令提示符,导航到您的Flutter项目根目录,然后运行以下命令:

dart dart run po_editor_translations --api_token=your_api_token --project_id=your_project_id --files_path=lib/translations

确保将your_api_tokenyour_project_id替换为实际值。

步骤4: 查看生成的文件

运行上述命令后,插件会从POEditor下载最新的翻译文件,并将其保存到指定的路径(例如lib/translations)。

示例代码

以下是一个完整的示例代码,展示了如何使用po_editor_translations插件。

# 假设您已经安装了Dart SDK
# 导航到您的Flutter项目根目录
cd /path/to/your/flutter/project

# 运行po_editor_translations命令
dart dart run po_editor_translations --api_token=your_api_token --project_id=your_project_id --files_path=lib/translations

完整示例Demo

假设您的Flutter项目结构如下:

my_flutter_project/
├── lib/
│   ├── main.dart
│   └── translations/
│       └── en.json
├── pubspec.yaml
└── ...
  1. 安装依赖: 在pubspec.yaml文件中添加po_editor_translations依赖:

    dependencies:
      po_editor_translations: ^1.0.0
    
  2. 配置POEditor: 确保您已经在POEditor上创建了一个项目,并且该项目包含您所需的翻译语言。

  3. 运行脚本: 在项目根目录下运行以下命令:

    dart dart run po_editor_translations --api_token=your_api_token --project_id=your_project_id --files_path=lib/translations
    
  4. 使用翻译文件: 在main.dart中,您可以使用flutter_localizations库来加载和使用翻译文件:

    import 'package:flutter/material.dart';
    import 'package:flutter_localizations/flutter_localizations.dart';
    import 'package:intl/intl.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          localizationsDelegates: [
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
            GlobalCupertinoLocalizations.delegate,
          ],
          supportedLocales: [
            Locale('en', ''), // 英语
            Locale('zh', ''), // 中文
          ],
          home: MyHomePage(),
        );
      }
    }
    
    class MyHomePage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text("本地化示例"),
          ),
          body: Center(
            child: Text(
              Intl.message(
                "Hello World",
                name: "hello_world",
                args: [],
                desc: "Example message",
              ),
            ),
          ),
        );
      }
    }
    

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

1 回复

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


po_editor_translations 是一个 Flutter 插件,用于管理和编辑本地化翻译文件(.po 文件)。它可以帮助开发者在 Flutter 应用中更轻松地管理多语言支持。以下是如何使用 po_editor_translations 插件的步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 po_editor_translations 插件的依赖:

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

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

2. 创建 .po 文件

在你的 Flutter 项目中,创建一个 l10n 目录(或其他你喜欢的名称),并在其中创建 .po 文件。例如:

l10n/
  en.po
  es.po
  fr.po

每个 .po 文件对应一种语言,文件内容格式如下:

msgid "hello"
msgstr "Hello"

3. 配置 l10n.yaml

在项目根目录下创建一个 l10n.yaml 文件,用于配置本地化文件的路径和默认语言:

arb-dir: lib/l10n
template-arb-file: app_en.arb
output-dir: lib/l10n

4. 生成本地化类

使用 flutter pub run po_editor_translations:generate 命令生成本地化类。这将根据 .po 文件生成 Dart 代码。

5. 使用生成的本地化类

生成的本地化类通常位于 lib/l10n 目录下。你可以在你的 Flutter 应用中使用这些类来获取翻译字符串。例如:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      localizationsDelegates: [
        PoLocalizationsDelegate(),
      ],
      supportedLocales: [
        const Locale('en', ''),
        const Locale('es', ''),
        const Locale('fr', ''),
      ],
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(PoLocalizations.of(context).translate('hello')),
      ),
      body: Center(
        child: Text(PoLocalizations.of(context).translate('welcome')),
      ),
    );
  }
}

6. 编辑和更新 .po 文件

你可以使用 po_editor_translations 提供的编辑器工具来编辑和更新 .po 文件。运行以下命令启动编辑器:

flutter pub run po_editor_translations:editor
回到顶部