Flutter翻译功能插件gtranslate_v2的使用

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

Flutter翻译功能插件gtranslate_v2的使用

GTranslateV2 Dart包

这是一个使用Google Translation API v2进行文本翻译的Dart包。它完全用Dart编写,因此可以在你的控制台Dart应用程序中使用。

这个应用做什么?

这个包使用GTranslateV2服务将一组字符串从源语言翻译为目标语言。 你需要在谷歌控制台设置密钥,并将其传递给包构造函数。

查看示例以获取更多信息

API_KEY: 这是GTranslateV2服务的API密钥。在运行应用程序之前必须设置在环境变量中。
如果`API_KEY`环境变量未设置,应用程序将打印错误消息并退出,状态码为1。
如果在执行翻译请求时发生异常,应用程序将打印错误和堆栈跟踪,然后退出,状态码为2。

示例代码

import 'dart:io';

import 'package:gtranslate_v2/gtranslate_v2.dart';
import 'package:gtranslate_v2/src/models/detect/detect_request_model.dart';
import 'package:gtranslate_v2/src/models/list/list_request_model.dart';
import 'package:http/http.dart';

Future<void> main() async {
  final apiToken = Platform.environment['API_KEY'];
  if (apiToken == null) {
    stderr.writeln('Environment variable `API_KEY` must be set');
    exit(1);
  }

  final client = Client();

  final api = GTranslateV2(
    client: client,
    apiToken: apiToken,
  );

  try {
    await _main(api);

    exit(0);
  } on Exception catch (error, stackTrace) {
    stderr.writeln('Error: $error, stackTrace=$stackTrace');
    exit(2);
  } finally {
    client.close();
  }
}

Future<void> _main(GTranslateV2 api) async {
  await _translate(api);

  await _detect(api);

  await _list1(api);

  await _list 2(api);
}

Future&lt;void&gt; _list 2(GTranslateV2 api) async {
  final response = await api.list(
    const ListRequestModel(
      target: 'ka',
    ),
  );
  stdout.writeln('_list 2: `${response.toJson()}`');
}

Future&lt;void&gt; _list 1(GTranslateV2 api) async {
  final response = await api.list(const ListRequestModel());
  stdout.writeln('_list 1: `${response.toJson()}`');
}

Future&lt;void&gt; _detect(GTranslateV2 api) async {
  final response = await api.detect(
    const DetectRequestModel(
      q: ['Გამარჯობა მსოფლიო!', 'ტესტი', 'შენიშვნა'],
    ),
  );
  stdout.writeln('_detect: `${response.toJson()}`');
}

Future&lt;void&gt; _translate(GTranslateV2 api) async {
  final response = await api.translate(
    const TranslateRequestModel(
      q: ['table', 'sheet', "hasn't she agreed?"],
      target: 'ru',
      source: 'en',
    ),
  );
  stdout.writeln('_translate: `${response.toJson()}`');
}

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用gtranslate_v2插件来实现翻译功能的代码示例。gtranslate_v2是一个Flutter插件,用于访问Google Translate API进行文本翻译。

第一步:添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  gtranslate_v2: ^x.y.z  # 替换为最新版本号

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

第二步:配置API密钥

由于Google Translate API需要API密钥,你需要在Google Cloud Platform上创建一个项目并启用Translate API,然后创建一个API密钥。确保你的API密钥是安全的,不要将其硬编码到你的应用中。

第三步:使用gtranslate_v2进行翻译

在你的Flutter应用中,你可以使用GTranslate类来进行翻译。以下是一个简单的示例,展示了如何进行翻译:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Translate Example'),
        ),
        body: TranslateScreen(),
      ),
    );
  }
}

class TranslateScreen extends StatefulWidget {
  @override
  _TranslateScreenState createState() => _TranslateScreenState();
}

class _TranslateScreenState extends State<TranslateScreen> {
  final _controller = TextEditingController();
  String _translatedText = '';
  String _apiKey = 'YOUR_API_KEY';  // 在这里输入你的API密钥

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.all(16.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: <Widget>[
          TextField(
            controller: _controller,
            decoration: InputDecoration(
              labelText: 'Text to Translate',
            ),
          ),
          SizedBox(height: 16),
          DropdownButtonFormField<String>(
            value: 'en',
            hint: Text('Source Language'),
            onChanged: (newValue) {}, // 你可以在这里实现语言选择逻辑
            items: [
              // 你可以添加更多语言选项
              DropdownMenuItem(value: 'en', child: Text('English')),
              DropdownMenuItem(value: 'es', child: Text('Spanish')),
              DropdownMenuItem(value: 'fr', child: Text('French')),
            ],
          ),
          SizedBox(height: 16),
          DropdownButtonFormField<String>(
            value: 'es',
            hint: Text('Target Language'),
            onChanged: (newValue) {
              setState(() {
                // 你可以在这里更新目标语言
              });
            },
            items: [
              // 你可以添加更多语言选项
              DropdownMenuItem(value: 'es', child: Text('Spanish')),
              DropdownMenuItem(value: 'fr', child: Text('French')),
              DropdownMenuItem(value: 'zh', child: Text('Chinese')),
            ],
          ),
          SizedBox(height: 16),
          ElevatedButton(
            onPressed: () async {
              final GTranslate gTranslate = GTranslate(apiKey: _apiKey);
              try {
                final translation = await gTranslate.translate(
                  _controller.text,
                  source: 'en',  // 源语言
                  target: 'es'   // 目标语言
                );
                setState(() {
                  _translatedText = translation.translatedText;
                });
              } catch (e) {
                print(e);
              }
            },
            child: Text('Translate'),
          ),
          SizedBox(height: 16),
          Text('Translated Text: $_translatedText'),
        ],
      ),
    );
  }
}

注意事项

  1. API密钥安全:不要将API密钥硬编码到你的应用中。考虑使用环境变量或安全的密钥管理服务。
  2. API限制:Google Translate API有免费和付费层级,免费层级有使用限制。
  3. 错误处理:确保添加适当的错误处理逻辑,以处理网络错误或API限制错误。

这个示例展示了如何使用gtranslate_v2插件进行简单的文本翻译。你可以根据需要扩展这个示例,添加更多的语言选项、用户界面元素等。

回到顶部