Flutter翻译服务插件deepl_dart的使用

Flutter翻译服务插件deepl_dart的使用

deepl_dart 是一个用于与 DeepL API 交互的 Dart 库,允许开发者在他们的 Flutter 和 Dart 应用中集成高质量的机器翻译功能。以下是关于如何使用 deepl_dart 插件的详细介绍。

获取认证密钥

要使用 deepl_dart 包,您需要一个 API 认证密钥。请访问 DeepL Pro 创建账户并获取您的 API 密钥。您可以每月免费翻译最多 500,000 个字符。

安装

在您的 pubspec.yaml 文件的 dependencies 部分添加以下内容:

dependencies:
  deepl_dart: ^<latest_version>

确保将 <latest_version> 替换为最新版本号。可以通过访问 Pub.dev 获取最新版本信息。

使用方法

构造 Translator 对象

首先,导入 deepl_dart 包并创建一个 Translator 对象。构造函数需要一个包含您的 API 认证密钥的字符串。

import 'package:deepl_dart/deepl_dart.dart';

void main() async {
  // 构造 Translator 对象
  Translator translator = Translator(authKey: '<your_auth_key>');
}

翻译文本

单个文本翻译

TextResult result = await translator.translateTextSingular('Hello World', 'de');
print(result);

多个文本翻译

List<TextResult> results = await translator.translateTextList(
    ['Hello World', 'Hola Mundo'], 'de');
print(results);

指定源语言

TextResult result = await translator.translateTextSingular(
    'Hello World', 'de', sourceLang: 'en');
print(result);

获取支持的语言

List<Language> sourceLangs = await translator.getSourceLanguages();
List<Language> targetLangs = await translator.getTargetLanguages();
print(sourceLangs);
print(targetLangs);

使用选项进行翻译

TextResult resultWithOptions = await translator.translateTextSingular(
  'Hello World',
  'de',
  options: TranslateTextOptions(
    splitSentences: "0",
    preserveFormatting: true,
    formality: "more",
    glossaryId: "123",
    tagHandling: "xml",
    outlineDetection: true,
    nonSplittingTags: "tag1,tag2",
    splittingTags: "tag3,tag4",
    ignoreTags: "tag5,tag6",
    context: "This is my context.",
  ),
);
print(resultWithOptions);

翻译文档

支持的文件类型包括 .docx, .pptx, .pdf, .txt。可以指定目标语言和源语言(可选)。

DocumentStatus status = await translator.translateDocument(
    File('<input_file_path>'), File('<output_file_path>'), 'de');
print(status);

管理词汇表

创建词汇表

GlossaryInfo glossaryInfo = await translator.createGlossary(
  name: 'my glossary',
  sourceLang: 'en',
  targetLang: 'de',
  entries: GlossaryEntries(entries: {
    'hello': 'hi',
    'world': 'erde',
  }),
);
print(glossaryInfo);

使用 CSV 文件创建词汇表

GlossaryInfo csvGlossaryInfo = await translator.createGlossaryWithCsvFile(
  name: 'my glossary',
  sourceLang: 'en',
  targetLang: 'de',
  csvFile: File('<csv_file_path>'),
);
print(csvGlossaryInfo);

列出所有词汇表

List<GlossaryInfo> glossaryList = await translator.listGlossaries();
print(glossaryList);

获取特定词汇表信息

GlossaryInfo glossaryInfo = await translator.getGlossary(glossaryInfo.glossaryId);
print(glossaryInfo);

获取词汇表条目

GlossaryEntries glossaryEntries =
    await translator.getGlossaryEntries(glossaryId: glossaryInfo.glossaryId);
print(glossaryEntries);

删除词汇表

await translator.deleteGlossary(glossaryId: glossaryInfo.glossaryId);

查询使用情况

Usage usage = await translator.getUsage();
print(usage);

示例代码

下面是一个完整的示例代码,展示了如何使用 deepl_dart 进行各种操作:

import 'dart:io';
import 'package:deepl_dart/deepl_dart.dart';

void main() async {
  // 构造 Translator 对象
  Translator translator = Translator(authKey: '<your_auth_key>');

  // 获取可用语言
  List<Language> sourceLangs = await translator.getSourceLanguages();
  print(sourceLangs);
  List<Language> targetLangs = await translator.getTargetLanguages();
  print(targetLangs);

  // 翻译单个文本
  TextResult result = await translator.translateTextSingular('Hello World', 'de');
  print(result);

  // 翻译多个文本
  List<TextResult> results = await translator.translateTextList(
      ['Hello World', 'Hola Mundo'], 'de');
  print(results);

  // 翻译文档
  DocumentStatus status = await translator.translateDocument(
      File('<input_file_path>'), File('<output_file_path>'), 'de');
  print(status);

  // 获取支持的词汇表语言对
  List<GlossaryLanguagePair> langPairs = await translator.getGlossaryLanguagePairs();
  print(langPairs);

  // 创建词汇表
  GlossaryInfo glossaryInfo = await translator.createGlossary(
    name: 'my glossary',
    sourceLang: 'en',
    targetLang: 'de',
    entries: GlossaryEntries(entries: {
      'hello': 'hi',
      'world': 'erde',
    }),
  );
  print(glossaryInfo);

  // 列出所有词汇表
  List<GlossaryInfo> glossaryList = await translator.listGlossaries();
  print(glossaryList);

  // 获取特定词汇表信息
  glossaryInfo = await translator.getGlossary(glossaryInfo.glossaryId);
  print(glossaryInfo);

  // 获取词汇表条目
  GlossaryEntries glossaryEntries =
      await translator.getGlossaryEntries(glossaryId: glossaryInfo.glossaryId);
  print(glossaryEntries);

  // 删除词汇表
  await translator.deleteGlossary(glossaryId: glossaryInfo.glossaryId);

  // 查询使用情况
  Usage usage = await translator.getUsage();
  print(usage);
}

以上就是 deepl_dart 插件的使用指南,希望对您有所帮助!如果您有任何问题或需要进一步的帮助,请随时联系社区或查阅官方文档。


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

1 回复

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


当然,下面是一个关于如何在Flutter应用中使用deepl_dart插件进行翻译服务的示例代码。deepl_dart是一个Dart库,用于与DeepL翻译API进行交互。

首先,你需要在你的Flutter项目中添加deepl_dart依赖。打开你的pubspec.yaml文件,并在dependencies部分添加以下行:

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

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

接下来,你需要在DeepL网站上获取一个API密钥。注册并登录后,前往API页面生成一个新的密钥。

以下是一个简单的Flutter应用示例,展示了如何使用deepl_dart进行翻译:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter DeepL Translation Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TranslationScreen(),
    );
  }
}

class TranslationScreen extends StatefulWidget {
  @override
  _TranslationScreenState createState() => _TranslationScreenState();
}

class _TranslationScreenState extends State<TranslationScreen> {
  final DeepLClient _deeplClient = DeepLClient('你的DeepL API密钥');  // 请替换为你的API密钥
  String _originalText = '';
  String _translatedText = '';
  String _errorMessage = '';

  void _translateText() async {
    setState(() {
      _errorMessage = '';
      _translatedText = '';
    });

    try {
      var translationResult = await _deeplClient.translate(
        text: _originalText,
        sourceLang: 'en',  // 源语言代码,例如'en'表示英语
        targetLang: 'zh',  // 目标语言代码,例如'zh'表示中文
      );

      setState(() {
        _translatedText = translationResult.translatedText;
      });
    } catch (e) {
      setState(() {
        _errorMessage = e.toString();
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('DeepL Translation Example'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            TextField(
              decoration: InputDecoration(
                labelText: 'Original Text',
              ),
              onChanged: (value) {
                setState(() {
                  _originalText = value;
                });
              },
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _translateText,
              child: Text('Translate'),
            ),
            SizedBox(height: 16),
            if (_errorMessage.isNotEmpty)
              Text(
                _errorMessage,
                style: TextStyle(color: Colors.red),
              ),
            if (_translatedText.isNotEmpty)
              Text(
                'Translated Text: $_translatedText',
                style: TextStyle(fontSize: 18),
              ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,包含一个文本输入框、一个翻译按钮和一个用于显示翻译结果的区域。当你输入一些文本并点击翻译按钮时,应用会使用DeepL API将文本翻译成指定的目标语言,并在屏幕上显示翻译结果。

请注意,在实际应用中,你应该将API密钥保存在安全的地方,例如使用Flutter的.env文件或Android和iOS的密钥管理服务。上述示例中直接将API密钥硬编码在代码中,仅用于演示目的。

回到顶部